- 注册时间
- 2009-12-25
- 最后登录
- 2021-7-10
- 在线时间
- 3302 小时
- 阅读权限
- 200
- 积分
- 10
- 帖子
- 13416
- 精华
- 1
- UID
- 2036
  
|
PHP5.3.0篇:IIS6上安装MySQL5.1.38,PHP5.3,Zend3.3,phpMyAdmin3.2.2的完整方法$ ] r" P; x; j9 Y6 E
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP
, V3 Z* n6 c0 {- DPS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0$ |* W' r- [" x+ H/ N
微软已经和PHP社区共同努力了一年之久,他们终于研发出能让IIS更快地解析PHP的方法,用户们甚至不需要做基准测试就可以明显感觉到PHP解析速度加快.早在2006年,微软就和Zend等厂商一起研发Windows Server下的优化工作,IIS产品组已经公布了IIS6和7的FastCGI扩展,它能让PHP执行效率更高. PHP一直以来是IIS的尴尬,用PHP扩展的速度跟不上其它服务端(甚至还有一些致命问题例如在某内存地址报错),而PHP又比ASP.net普及得多,因此微软需要在IIS+PHP上突破市场. 微软去年底发布了ii6的fastcgi模块,可以免费下载,使用IIS6的您不妨在您的测试环境上试一下,没准会有惊喜哦! 今天将服务器上的php支持改成了fastcgi,目前运行稳定.fastcgi的iis模块可以让流行的应用框架在iis上支持fastcgi协议以提供高性能和可用性的访问服务,fastcgi面向现有的网络服务器提供高性能的cgi替代标准。具体php安装方法我记录下来,其中包括出现的错误.1 b' W- l- A( v& f6 j W/ T2 R
1.下载 FastCGI For IIS6 ; q9 N! c3 ~8 _" a2 P
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86). T# q1 k5 a* X8 k3 i
下载:http://www.iis.net/extensions/FastCGI,选择: x86
& T. {1 L' V2 E6 i9 w, m# W' {) i* X d
( L) j* T4 p2 P" x& T
* w( y8 I# Y; O0 u' A) G- f或者直接下载:http://go.microsoft.com/?linkid=96556961 ?! f1 H5 |" T# ~5 O3 `7 P0 I9 E
; E1 g; V8 q# {! `. Q
下载之后,双击运行进行安装。4 r9 }& d5 `" p2 f
(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )* P3 e* s; U2 G- X1 n$ n
% }, `7 s+ C4 x M0 B5 i9 P+ T+ }- L
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:
8 m7 f+ h! k# |; M: c
) ~; ^3 Y4 G3 D: X+ ?. ?7 g, N) |
! z; v6 A# I- i7 y! C2 d" j7 G& X8 [3 W) t' P4 f
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
, [' `# |- B( y, B v7 w9 W
% Q3 B, q1 Z& i5 G5 @" k5 b
0 |9 c3 h1 l7 c% e0 }; X$ ]* T5 S4 D; W$ v
2.下载 PHP5.3.0 Windows 版$ f% V7 S# q, @* \
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
% `4 R' q. }! E7 V8 b新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,* v* @( s6 Q' H
选择:PHP 5.3 (5.3.0)
$ T% T4 x6 X$ d! ^0 v$ r( jVC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]9 l6 Y6 f6 d/ M0 O* e, w
sha1: f049c806744855e4420844d47e051949fcf06661
6 M/ d, Y5 F5 w9 e7 {/ n) i下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:
% R, T' x& } l& }& E& u+ N. |, {( M
% R5 w0 A0 N$ J9 w7 a: x- m0 [$ ^" J" y# ]8 ~
3. 注册 PHP 到 FastCGI
t" \4 Y. l4 Y) A g3 _1 I h# i
4 R' N* M$ E v3 L4 z$ |' I打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
& r" t5 k4 ]: Y; This is the configuration file for the FastCGI handler for IIS 6.0.
! z: i6 Q, ?5 v# X# `- ?1 q; The FastCGI handler will look for this file in the same directory as
% A% ^& W, d& k5 E. t; fcgiext.dll. By default, the FastCGI installer will place this file into- r( ^# H, Z M' {
; the %windir%\system32\inetsrv directory.
1 D8 s8 J, D, G% }. k+ S8 x0 C* h( j! w ^5 J2 X) W7 p5 C3 J
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
8 n- v% s9 ]! O3 o5 Q1 s( s! C$ X" ~ @* s) V# C" [: Z
在 [Types] 下添加以下配置: : |( ~9 `: h/ \
[Types]
- M! \5 ^- W" w6 S/ E9 w# e- q9 R4 `5 s) }5 f+ F$ Y. H# U0 v. B+ a' h
php=PHP1 }( B7 Q( ~6 r9 A
[PHP]
' t9 W, g. ~2 g9 M: j# C5 i$ w6 T* \ExePath=X:\Server_Core\PHP\php-cgi.exe# s( L! J- [$ E! W5 {$ ^
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
" N" t0 W) ~) b' p1 A9 l$ l$ x' g( o7 v8 Y7 E
4. 配置 php.ini
6 C$ K- A) D) p2 e$ Q1 g" }将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
/ v; {# J0 g, }% L( a! d找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面: H2 z# R+ @$ ]5 u, @, x9 Q8 v
[Date]4 e! t. M/ L- h" |3 X) c3 ^. m3 Q
; Defines the default timezone used by the date functions$ a* f! ?: T: i D7 j
; http://php.net/date.timezone
0 j, y+ N9 U7 A, O& f, n; date.timezone =9 p3 R( b" M8 H* f4 m+ ]3 T
更改为并去除前面的“;”: V" z4 e8 G. T ]9 G+ G' p
[Date]
. J% ~) G/ {' [& F8 u( {+ e; Defines the default timezone used by the date functions/ {) ?# }4 i* t
; http://php.net/date.timezone; | p, x. E8 G) o6 j- a6 ~; ~0 ~
date.timezone = Asia/Shanghai
T! k5 |" d1 S7 t. G# r如果不改以上的date.timezone可能打开网页会提示500错误) n7 T' p/ r6 ?/ F2 H8 h; t
找到
; O! f T7 n# p" [" x; On windows:" i( i0 }5 k9 u U: d8 A! f
; extension_dir = "ext"2 A& p3 h) S2 n5 S) l/ l5 {7 H
改为
1 l; n9 |+ U: f( ^0 n1 C- M; On windows:: X' x$ r4 E1 A W c; ?
extension_dir = "X:\Server_Core\PHP\ext"
, ^* q- P3 o" E# [! T, X, d, j6 d0 e- m
! m9 u' T& W- l. p) p找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
f* Y( L8 q3 o如下图:4 l- P. [, q5 C/ F" I

# v& w, [/ G9 y; l D! V! W
7 a" \! z# U9 c( q) Y找到:short_open_tag= Off;改为
) [) l. V3 X5 F- \ short_open_tag= On+ z) b. j" A9 \7 ~
" P1 p+ ]! `) j& ~% T7 Q. ]至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是* Q E C% S7 S- y t E
;extension=php_bz2.dll
" z" N, y8 q9 x- V/ j8 w W |: b;extension=php_curl.dll0 `$ `, q2 y# p6 M
;extension=php_dba.dll
" U+ i. D% B3 Z5 @2 f1 gextension=php_mbstring.dll$ C8 M: I) p/ w7 N( V% D$ Z
extension=php_exif.dll
6 }" d; ?. L( B4 y' T& `;extension=php_fileinfo.dll
7 E% [) x& }- Y" Pextension=php_gd2.dll
0 g% K2 _* v% _/ u;extension=php_gettext.dll7 D: |5 L$ c7 w3 r A
;extension=php_gmp.dll
) b1 h) a; C! _0 L2 N;extension=php_intl.dll% A3 k3 v* i. E; {0 C- }
;extension=php_imap.dll
! x# ^) ~' z8 y5 M4 o+ F;extension=php_interbase.dll
4 H u8 Q) J1 V9 V: w- Nextension=php_ldap.dll
0 M% b! m' n$ p;extension=php_ming.dll. C* i Q/ X( J( m1 D& Z
;extension=php_mssql.dll: Q# m7 I+ W- R, Y1 h8 C) \; B
extension=php_mysql.dll
1 } U( @* G c9 S7 J5 T+ jextension=php_mysqli.dll- d& {) U+ ^! r2 @' S- m( L' \
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
: T. k! |" E* V;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
; \; O; Q4 |3 L# P+ B9 o;extension=php_openssl.dll
5 a, a7 @* a! v, L9 T( U;extension=php_pdo_firebird.dll
( i- a$ E0 K( a3 d- v;extension=php_pdo_mssql.dll
* n2 H2 y( H0 W$ {3 a;extension=php_pdo_mysql.dll0 J% L# [/ P( _1 }: z2 n& Z* R
;extension=php_pdo_oci.dll
# F y! i) h- F6 [( w( A;extension=php_pdo_odbc.dll
: Y8 W) t/ {! @4 h4 z3 h/ `;extension=php_pdo_pgsql.dll7 j" k2 c# A" G1 B& y v" H- \8 J( Y0 @0 h
;extension=php_pdo_sqlite.dll
1 ~4 j+ v9 D' ?; S9 g;extension=php_pgsql.dll
D7 U8 e$ k! O;extension=php_phar.dll$ ? E# W. C J3 v8 A) Z, a; i
;extension=php_pspell.dll
: R" I7 Q/ B h0 M7 P9 W9 s;extension=php_shmop.dll+ b2 g) V5 T# l; O- o: h
;extension=php_snmp.dll
+ j& l1 E7 r; i. G;extension=php_soap.dll( T5 _" ?7 I4 O! q8 [4 u
;extension=php_sockets.dll/ f/ x( K3 J! V: c. @2 n
;extension=php_sqlite.dll; K7 m- P4 D: w7 }/ L$ q. [( x2 b
;extension=php_sqlite3.dll+ ]' d5 R* O, n! ]* ?3 _' x) ]
;extension=php_sybase_ct.dll! A( }8 J, |- y, j' Y, n* `0 W
;extension=php_tidy.dll S- @8 T- f3 O4 b0 O
;extension=php_xmlrpc.dll3 j+ `; C: `5 g: j' I4 p( N6 d" g4 Y
;extension=php_xsl.dll5 H5 ~& }+ z- @% z' X x6 ?- a( x
;extension=php_zip.dll
! x% X! m: ~$ I$ T4 d9 U( L! K注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行) q5 l3 P" Y! ^
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!
; u( m) t4 u" c! J
& H j+ d% }! K6 S! P* W- Q7 E H( f4 [3 s, l: p
5. 配置网站
- \% O- {4 v5 J6 M! n9 }$ E3 p; j
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图# }/ ?: M' W, N( L" z* T2 {
" p- J. @& y+ a3 q
O8 W# _. b) N2 g 4 j" h3 f% s% k! |3 ^
8 b, K* N3 Q( Z! P9 w( v2 n可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll v7 Z3 C9 U1 U
9 T3 ^+ X6 R2 r, d6. 写个 php 测试下吧
: b1 \! j1 P4 k4 Q4 Y7 s7 v5 {) Z* X) V) n
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
+ M: F7 g; a6 k* J8 m. y& Y \
, Y- ~, t0 }* H8 D6 ~6 ?6 T: G) }! @! m, [+ B0 v' C
5 O! j/ Q1 M+ O5 u; F, Y
测试是否安装成功!* _$ q6 f# T+ L+ N$ {, {
建立一个网站,phpinfo.php文件内容为:
# Z0 _4 P# u3 }. @7 }文件:phpinfo.php ^4 y0 k. @2 y0 H x
<?php: V, R/ p. h3 b5 [) f
phpinfo();0 m9 b: O; f/ z6 `4 i5 `
?>
* f1 X! q2 a6 r+ N! ?/ P( H0 H7 `" t( |2 k% V9 W1 D
看到类似以下效果说明你的服务器可以跑 php 了。
0 r0 s6 N6 M5 f2 Y
0 h- W/ {: e: h8 X, E安装过程出现小插曲,如果运行测试文件出现如下提示:
* \8 G. d7 u6 O& j7 V先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:4 ` Z' H* s4 N
错误1,
% c& O- A3 a3 o' o5 {! N) Sfastcgi error
4 G& [6 H3 @9 S- Dthe fastcgi handler was unable to process the request. 9 f. p+ I( I8 g5 Q C
--------------------------------------------------------------------------------" {: c; Z8 ]& k2 D, a
error details:
: t2 i% H- E6 x6 U7 ?error number: 5 (0x80070005). ; j7 N$ S2 x+ o- c- ?. M. x3 |
error description: 拒绝访问。 7 Z( Q& q& q- [6 ?6 G8 {
http error 500 - server error.
7 O: z5 U% h0 c4 d( u9 Minternet information services (iis)- z6 O+ e8 U7 u4 R
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
4 ~; `' R e6 x# X6 s: ~$ e7 ]* y7 U2 k( t& @0 _( H* D2 P
错误2,1 D( W! b" Q% \5 _
FastCGI Error
! u% C% z$ S; E6 uThe FastCGI Handler was unable to process the request. * |% V* V1 |7 e9 l
--------------------------------------------------------------------------------
6 {+ b8 P3 b# M uError Details:
7 P1 i8 f4 ]1 F- l1 u" L6 z3 P, ~Could not find entry for "php" on site 1960240566 in [Types] section. # k9 j. Q( A/ A$ J% X
Error Number: 1413 (0x80070585). & ?0 B! b3 Z2 u0 a: e/ N
Error Description: ?TD§?÷òy?£
; X6 B- Q4 s7 U9 VHTTP Error 500 - Server Error.
; \0 k S0 h1 S9 \7 |& w+ KInternet Information Services (IIS) 1 O( J$ r( m$ e/ U9 n7 |2 P- u
1 X% h5 c+ \% _; S1 Q即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
; o5 d6 o# z0 c错误3,
8 @7 Y. Z! ?7 d7 U& k+ X4 X3 [----------
, o0 L7 p) W1 f4 M- AFastCGI Error
; C( i1 R) i. [$ E, ?The FastCGI Handler was unable to process the request.
$ M$ A- q( U0 B+ _% XError Details:
, @% A% F! E. u- A" F2 |/ R5 G- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
; j! B/ O( _, y. I1 Q/ Q q6 XInternet Information Services (IIS)" } r& T5 m" V [& g& H
--------& s) H) o6 v' J
我的PHP目录在C盘 / X8 L& @5 R0 N+ l4 y# W: q% P* m
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...8 x1 ]% }9 M; j, r# d# R2 J
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。: `$ ]/ D# Q/ r
把 C:\php\php.ini 删除,搞定!
4 q% u+ ^( i- X" ]) y4 [+ X* ?随后用FakeCGI调试工具才搞定原因..
' ]! _; G1 T3 q( ^* L感谢FakeCGI,痛斥我的坏习惯!!!: _# p% r' b# l0 D: P- O+ @
) d3 V( F$ f" L/ R! Q9 c7 J) V) }5 K) `# \
% v+ L$ ?5 u3 F& E5 |8 l
1 Z9 a! N- O' N, Y" O8 u
1 S- o7 e J& J/ ]9 YPHP5.3.0特除配置
8 |2 l8 V* {4 x4 @1 c& ]7 m一,如何正确调整上传附件大小限制?
+ L7 E5 S& {/ D" m* E$ Q修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:4 y& Z, g! Y4 t s- ~6 B
1. post_max_size =10M
5 V4 }" Y1 h0 f7 N1 G& V表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.% U* _) f+ r" y: j5 D5 s
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...
1 a) e4 C$ o; S: v0 O. R' M2.file_uploads = On
- ]; l' a( O6 L是否允许上传文件,如果为OFF您将不能上传文件.1 I& E! v( `8 v! b. C6 E" F
3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
_- z$ T" t4 w3 @上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.( U$ X6 U* L3 |
4.upload_max_filesize =2M ) d$ b' P7 V/ N7 K
最大上传文件大小,此项针对上传文件时单个文件的大小.
; G' w2 s1 s0 ]5 R" z: R2 Q与post_max_size之间的关系:
, [7 h9 d& x8 ]在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.. W! i( t1 k% v) |' g8 D; e% |& W
修改之后一定要重启 Web 服务。! {* h+ v- j" t$ B% y
注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
8 I9 N& C$ k: z+ ^' z二,EXIF信息服务器配置说明:9 D/ o; ?$ `( h' ^- E& G# D
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
! C6 |! p# Y3 w# ~' Z2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前
( S( F$ @0 o. ?* j, c3.找到[exif]段,把下面语句的分号去掉。) G; B+ |1 r/ k
;exif.encode_unicode = ISO-8859-153 K5 K, L8 x! T
;exif.decode_unicode_motorola = UCS-2BE
- ~6 x- B0 f! h" O, ^;exif.decode_unicode_intel = UCS-2LE
& y, t1 @3 ?: N( E2 A; n8 G;exif.encode_jis = 6 H$ P3 j/ u- k0 F
;exif.decode_jis_motorola = JIS
/ i, _( T/ ^/ V W3 W& n, t2 u4 a;exif.decode_jis_intel = JIS: J/ w4 F/ H! Y& `
PS:" j* G3 O: N1 v, b
安装版PHP的方法: 3 @) C. u' ~/ O# P9 Y( c
点击NEXT
0 i: a/ I- b4 _5 s$ e8 c
" `. I* H& X/ N6 {# e7 _打上勾同意
+ T6 J+ ?7 V: G4 a
, ^0 N% n; K" |出现安装路径,默认路径,点击"Next"' Z% n. X! |& O, @ v! _/ [

; T# s- q# a, y2 L- Y1 Q( a3 V$ I在这里选择:IIS FastCGI,再点击Next
& q$ _3 L5 g* j( A8 k4 K2 u* v2 z
3 \# e5 b0 ~9 M2 J, N然后在模块里选上 \8 j$ K3 H; k( {1 y o: A; A- z
mysql
+ W: e+ N$ U( W# M0 l# sGD2
! ]( r" y' R7 R- t9 [# WMultibyte String0 O; \! L! ]5 f) S" o `0 k" E5 _5 k
mcrypt- g: s" U; v Q8 e1 a
之后点击"Next",安装成功!
' f5 `% u/ v, n$ u0 Z( l5 j H4 E) n$ N
& ^0 K4 D$ Y' C
, H. C9 M, g& r待续: |
|