- 注册时间
- 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的完整方法$ m) X& O# g3 y# l7 [" e) X& Q6 Z/ t
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP: `5 L: U$ d4 u1 h
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0+ w* u0 d$ r6 `6 k' V
微软已经和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安装方法我记录下来,其中包括出现的错误.! b+ {6 B4 C, P% C: _
1.下载 FastCGI For IIS6 ( u; k: K) e# J; h" D5 d. k ?
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
, B& t& U6 m: O% H5 ^0 |下载:http://www.iis.net/extensions/FastCGI,选择: x86
# y( q5 w6 \* r6 [" ]4 R$ A- x+ K9 z. \( _ H: S# Z
* D) ^8 J/ D8 O; T. Q- M2 @
# k ~4 ^+ _; `) {9 `, _或者直接下载:http://go.microsoft.com/?linkid=9655696' k) F( r$ p+ S+ @ R7 f. E' m
. k( U" q" W$ `3 o& p
下载之后,双击运行进行安装。
& t) L& ]3 Q. S) s) S(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )" j3 \3 N. D' ]. E' H+ n% \
+ }: S2 E- s3 h2 V. e2 q6 c安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:2 _& V. |; }5 X: b K, E
, C6 v; w* b7 x) U! a
& |9 v& }0 z! U" S+ g
0 M8 b" @: a2 X+ A; n9 H. N
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。* v. M. E4 `& T: ]9 d; }) L4 o% ?. K
9 P/ Y/ i7 t: p: }' n
: z0 T% g2 F! a4 x7 `- V
0 W5 y1 l$ `; i$ t
2.下载 PHP5.3.0 Windows 版
5 H; x4 t7 d2 U+ M$ M由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
4 d1 D S) k, v% s9 }新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,8 s7 M' Q p- D5 z5 f& A
选择:PHP 5.3 (5.3.0)! [, p6 S9 U$ H7 {- e4 Y% M$ K$ F
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]: K& m3 y. m" r- s& L6 f! d
sha1: f049c806744855e4420844d47e051949fcf06661
# X6 }$ ~4 n, a- `6 v3 r下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:, D- h& N3 D) L/ f5 O) i0 N4 X" `" ]

" G9 q- _0 P7 G. w; P
& ?$ q! F2 n0 ]- P/ Z 3. 注册 PHP 到 FastCGI 5 c- o8 S% ~) ]# c% K% t
' y, K3 I# ?' o4 C打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
' ^0 w$ V) s$ P# {2 `3 X2 l5 D; This is the configuration file for the FastCGI handler for IIS 6.0.
3 A. W n! o j+ V; The FastCGI handler will look for this file in the same directory as2 n* u" y, V/ x2 @( B+ X
; fcgiext.dll. By default, the FastCGI installer will place this file into* m5 [. Y; W0 X: a) P+ H7 s2 s! _. Y$ v
; the %windir%\system32\inetsrv directory. / [) g( d5 U7 f/ Y3 y
3 u9 d) `, q/ n; s; `# ^* }我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
{/ R$ A$ h% k( _. T+ C
! v/ `+ ]* u+ M: \; q4 \5 t8 Z在 [Types] 下添加以下配置: ! H \$ G) z% ^4 X
[Types]
7 s7 Q9 R* X Q+ |; O, P# v% N; S
php=PHP1 h, B# E- B3 T( w2 l3 T$ a4 x
[PHP]
) O, ]0 B0 w4 [+ H1 m$ ], }6 [ExePath=X:\Server_Core\PHP\php-cgi.exe2 s* A2 i% d& U7 l$ s- i
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)# X3 M& [9 |; {- W
0 \4 B2 ]. V" L4. 配置 php.ini # r1 Z% U& n \
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini 0 |: u/ W1 a- Z! J5 Z
找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面- z# C2 \( n7 X3 c* a' p
[Date]5 a. k$ b5 i$ l' x5 k$ ^! E: U5 `
; Defines the default timezone used by the date functions# o2 a# O q' K/ ?% _9 M
; http://php.net/date.timezone
7 N3 Z: @& Q, A; date.timezone =& y' s; V, N1 U1 F8 b; J' b. E! o
更改为并去除前面的“;”:
, E4 o1 O% N8 t: w[Date]) f. p" M& f' N B* m3 g
; Defines the default timezone used by the date functions6 P1 w% L1 K6 b5 M/ M+ \
; http://php.net/date.timezone# g9 Q, U# D+ m2 Z$ E6 i
date.timezone = Asia/Shanghai2 O: W1 C0 F. ]; g
如果不改以上的date.timezone可能打开网页会提示500错误, U7 A2 y- E- g% z* g6 P
找到6 G8 U5 ~) M a! _
; On windows:0 q+ D \9 ^2 ^0 u9 ]: P2 i2 Z
; extension_dir = "ext"
% w1 i; x( I0 ]4 r+ v) [改为$ @3 n o f, | v8 g& T1 d8 y
; On windows:
' F& \3 J! R7 ~. `1 c8 pextension_dir = "X:\Server_Core\PHP\ext" 6 X8 C# m5 w2 @3 o1 ~$ b
/ a1 H0 R$ E$ |9 a# y' X/ V! V: h
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
8 L+ o6 I9 b0 o, H如下图:
, M# E. U ~3 H, m$ W S3 W
/ n7 Y+ i5 i- d7 M [+ X( L! @+ n: `& U: E' e3 s
找到:short_open_tag= Off;改为
0 H% n3 d% N2 a" l7 K, |+ e short_open_tag= On
$ L% h) U1 D6 Z; t& c/ j7 r4 t( o( B+ E( g9 w) \9 h9 J
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
5 b: k/ `8 K1 a$ A;extension=php_bz2.dll+ [9 X; o) x; k( S6 d5 J
;extension=php_curl.dll5 ?2 g3 C* [" h# P' L
;extension=php_dba.dll
& w" v( S8 `3 }: _) _: Textension=php_mbstring.dll
w8 x) X8 z& A1 f6 D1 Y3 ~extension=php_exif.dll' i5 D ^; g1 D6 E4 {. q! X
;extension=php_fileinfo.dll
5 N5 }$ A A B. I+ Y# R! m& K$ }extension=php_gd2.dll
7 T9 b+ w0 |+ u6 o;extension=php_gettext.dll! l2 D8 b1 G1 E" Y0 ]
;extension=php_gmp.dll. ^& J$ D# ^" ^& c6 c5 ^
;extension=php_intl.dll' Z6 V. Q6 Y7 z; K+ e1 ^/ Y3 }
;extension=php_imap.dll2 ^' D0 t, Y2 r# w. z
;extension=php_interbase.dll
& r# w X" E' Z3 J9 lextension=php_ldap.dll
- v( C3 S5 Z% H$ I;extension=php_ming.dll
/ Z- [, ?- ]2 E* _4 P) s# h;extension=php_mssql.dll( P- l( A8 X! D Q1 Q8 [% W
extension=php_mysql.dll7 F8 U0 ~# D' I$ N
extension=php_mysqli.dll
. i: O" j6 ^/ E& V' H+ E;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client* g9 O' ~2 s% w' f' ?, t
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client/ a! g) k0 `+ G3 f$ e3 H1 M
;extension=php_openssl.dll% d6 X- G2 s, I
;extension=php_pdo_firebird.dll
& [5 S# b7 _& W3 k- u" ^ ];extension=php_pdo_mssql.dll
* s/ O% E+ b2 p4 Z7 q" g0 A;extension=php_pdo_mysql.dll
! t; f" v; p g( J$ d; U) a! t& j;extension=php_pdo_oci.dll
9 J1 p9 l* H, L% n;extension=php_pdo_odbc.dll0 a1 q. Y& @$ J& F
;extension=php_pdo_pgsql.dll
9 C7 }3 r6 T! ]: ?* m;extension=php_pdo_sqlite.dll& N6 U `0 I. Y! @0 S! w7 W+ G9 t
;extension=php_pgsql.dll9 f7 @4 z5 t# C: r* Y6 Q0 _, Z
;extension=php_phar.dll
3 {' \4 [5 _0 n; W$ h/ u$ u;extension=php_pspell.dll& _, \( h* c% u4 D8 _' a: }: y4 J
;extension=php_shmop.dll/ f; E, F Q: X+ _: [" w* v7 n* o
;extension=php_snmp.dll3 p# B, ]8 K! S) w [' J& s
;extension=php_soap.dll
! v/ t' k0 y0 ~/ v, C;extension=php_sockets.dll
$ x( {- d- ]1 I1 T;extension=php_sqlite.dll% i5 R+ o6 H! t, x
;extension=php_sqlite3.dll
' H' F# _" @- L;extension=php_sybase_ct.dll, H4 R4 \* @+ S# l
;extension=php_tidy.dll5 P+ a! D) @8 M- h! k
;extension=php_xmlrpc.dll
/ P" x' F* b- ^5 D' ]8 M;extension=php_xsl.dll! o! w& k0 r K4 u4 {
;extension=php_zip.dll, f& K* |. i) D( ~
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
L; L2 C; L. g, E6 Y& @: R/ V/ t保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!
" j" r- d5 O7 R" r
: t Q2 t, a* l/ U6 J
7 c$ V- Q& I: n' e7 c# w) q5. 配置网站 + b6 a; z6 Y5 g9 x. a
; m W( y2 p+ @+ b打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
1 L: y+ z L( r0 _* `( J8 ^4 q! q( i9 A, T& K% T4 i( {9 e( o
) x8 v" x7 I% y- L- G& c
. v/ x2 P3 T- K2 D* R W
* F4 w( \) M2 T' O7 |$ B& w2 _可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
# }& s2 E1 s4 n: X
9 m! m) x' z* N3 r6 e* e- z1 _6. 写个 php 测试下吧
' C, c8 i- |4 \2 i0 l, S# K* B: G4 v7 p8 G+ Y
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!0 J o+ I. Z: Z- y
* [5 B( ^0 D i' O" b y7 j7 m: d6 \" l' X0 E( D- z
! D7 |2 l* R) [) c# K* ?+ B. N测试是否安装成功!
1 \3 J0 l) F) s' O$ O% g建立一个网站,phpinfo.php文件内容为:5 E* s- o" ~5 Y( c0 ~% }3 r
文件:phpinfo.php' x! J3 p$ p A" J7 C+ k2 U
<?php1 X1 k$ q$ _8 K9 _' @
phpinfo();3 C0 g6 W0 N5 M5 a% p
?> . M8 w; v7 m. t9 }8 H
" i' w! Y% z( @" ^4 m9 B看到类似以下效果说明你的服务器可以跑 php 了。0 r* ?' \3 p. s6 _

' j s) Q5 e4 b1 @3 z0 l6 A! v安装过程出现小插曲,如果运行测试文件出现如下提示:
/ S, N3 @5 I( f! ~. R% ?: c先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:' |+ A+ [' Y, @3 `
错误1,
: ?* J/ `4 G* k U ?. T; Cfastcgi error
$ ^ ]. D4 z l' ?6 o- ]the fastcgi handler was unable to process the request.
* G5 {2 Y: |$ X5 |9 Y--------------------------------------------------------------------------------
7 \2 E) O0 C$ l! [error details:
! ^( ~& E' w6 A$ ] ?error number: 5 (0x80070005).
, U) [& x2 ^8 Lerror description: 拒绝访问。 , C: t1 p4 U5 }0 M8 u
http error 500 - server error.
+ [$ p! _& Z$ o! q: m- @internet information services (iis)8 k( [" y' N( ]* }7 G
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.* c1 h2 r2 j* F p3 I/ u; F
! `7 L, w+ }0 {- z$ O% P
错误2,% L: a9 I9 x4 q% e- C L/ k
FastCGI Error9 t4 p9 D5 ^0 r3 R, ~, J4 u; {4 X
The FastCGI Handler was unable to process the request.
- _' u! m4 s( O0 N- Y8 e--------------------------------------------------------------------------------
. t0 v3 [. |+ A \Error Details:
6 g( q, `, S2 q% N; WCould not find entry for "php" on site 1960240566 in [Types] section. $ l; a u$ A1 @: N- d6 Z8 n, t6 U: C
Error Number: 1413 (0x80070585).
0 c! j6 I0 Q1 b/ U6 Z9 @Error Description: ?TD§?÷òy?£ ' g1 E A) i; t' i3 s
HTTP Error 500 - Server Error.
, d! j( u' x; A: K7 ~Internet Information Services (IIS) ) `+ {1 n2 f/ B! p, q
3 l G& ^$ Q* } W
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
4 I1 w' e+ v& r2 N* x; C7 }错误3,3 {6 ]0 ]: Y3 W$ c3 V: n- `- y9 T
----------
u8 u! }- G o1 ~3 h T' lFastCGI Error ( ^' W4 Y5 s6 d' U4 K9 R/ }
The FastCGI Handler was unable to process the request.
0 ~9 d0 R0 c* ~4 r( ]3 A- f3 cError Details:
, h8 q1 x( Z5 q( [- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
) L: x: Z U$ u+ {& w1 \% JInternet Information Services (IIS)1 _! }+ Z7 A3 Z& a
--------
. {- Q' _$ M& _, N+ [5 n* _9 ^0 u我的PHP目录在C盘 ( Y7 U; K0 _, q: |& S( ]7 d
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...* \, F: K, f- N) Z, x" V
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。. Q0 `# v& [( f0 s0 G3 d" k
把 C:\php\php.ini 删除,搞定!
! F% r K; a6 ]5 _随后用FakeCGI调试工具才搞定原因..6 J. S5 }7 t% s% W# \! |
感谢FakeCGI,痛斥我的坏习惯!!!) b: `% p; k" z" K
# l7 ]/ i0 t0 G. n5 a/ O; @" }0 o
( U! |& k9 a9 Q7 Z+ c j6 |0 ]* _: X- X8 f/ x( L$ i% j
" L5 B: r: `8 K
4 N1 O& \2 F2 @ j, P
PHP5.3.0特除配置
5 {5 b! A) a1 p9 f" s2 J一,如何正确调整上传附件大小限制?/ w/ \# g+ C9 L; {$ M) l
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:# U7 B; Y& s. V; `0 u
1. post_max_size =10M
6 t. N: ^, l: L表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.1 R- }$ B- h* K& s' T% T' F0 T) j4 W
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...7 i% Y1 D/ g, P- m! y6 }' ?$ [
2.file_uploads = On
_& i3 j9 S( c7 f% B是否允许上传文件,如果为OFF您将不能上传文件.
( e# ~; G' h3 L# r9 G# J+ o3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
4 P" a! g4 N, O7 ]$ o; L9 p上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
1 U; g/ B: q/ o0 S a: M/ n4.upload_max_filesize =2M ) a( b/ m3 \ N! C1 g! x0 f* ^
最大上传文件大小,此项针对上传文件时单个文件的大小.
" z; Q. F" m3 M/ G3 \与post_max_size之间的关系:
. K* @7 v+ T$ ?& x在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
8 f; U- b0 q2 t% ~* u修改之后一定要重启 Web 服务。
4 k9 o Q) O" R. g( X, w" h注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
0 a, _ M. [' Q6 P' K: X3 }二,EXIF信息服务器配置说明:
# \ D& ]5 z( R6 j8 H! U1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
1 Q" j9 r3 Y: X( a8 J2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前
, D0 m* A4 n H1 o3.找到[exif]段,把下面语句的分号去掉。
1 C5 Q8 s7 r' J E4 |;exif.encode_unicode = ISO-8859-15
6 C+ ^* i! m5 E2 V. J6 j- t r;exif.decode_unicode_motorola = UCS-2BE
6 w3 K; q% W. l9 V;exif.decode_unicode_intel = UCS-2LE
% @6 H* F% w, l; z2 T+ b;exif.encode_jis = 9 `' Q) `8 U9 M9 T% }3 v5 p* N
;exif.decode_jis_motorola = JIS; f) C8 ]3 R' c+ \
;exif.decode_jis_intel = JIS
2 `1 T+ n0 ]; APS:
" G9 |- m$ _. Q安装版PHP的方法: 
: S/ A5 s( s: B. U, H) T点击NEXT
* a* m$ p6 o* m( R# X+ ~, v: b
7 p3 {9 j( \% @" k打上勾同意5 V6 m( I4 t* |+ @( }% l% s

0 J5 G X" D0 K* Z8 K% c1 |出现安装路径,默认路径,点击"Next"5 k: d# d; u+ ~6 v5 o9 e1 l9 p9 T; T7 l
! r# @( U4 |9 N0 R. a) B- e: T, D
在这里选择:IIS FastCGI,再点击Next* N Z. A# Z2 M$ a
9 D. _; k+ }) H3 u2 [! D* R
然后在模块里选上5 }2 Y7 d4 v. R- o% B
mysql X7 q* y8 S b5 X- _
GD21 y( t7 g7 `3 ^* X+ A& C
Multibyte String
1 Y. m7 ^4 |; A9 y2 |mcrypt
" a" N* G8 Q; \: z之后点击"Next",安装成功!
6 ]8 T' @2 G/ V k+ }$ X& ~ O @! _ t$ X) l
$ D* p) Q2 z* z% T
: p8 ~4 S* p4 Q
待续: |
|