- 注册时间
- 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的完整方法
+ T. W. q: I5 r/ m+ t! s$ d在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP
! C! l- F) n5 Z6 iPS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0, p$ B6 @1 q( d0 |+ h# `3 R
微软已经和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安装方法我记录下来,其中包括出现的错误.
0 e% T1 C9 g, {( m1 `5 B1.下载 FastCGI For IIS6 0 W3 m* t* l& {, d" W8 }5 _
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
& j. B, B( q% G% }' D/ p+ E下载:http://www.iis.net/extensions/FastCGI,选择: x86
; N2 Y- r9 C* r( O5 G( ~- y
" U. V4 C, Q7 Q, R& u+ F; u$ b % q# R' H: D9 M9 q; {
2 j8 d; ?0 t# U; `) {8 Q或者直接下载:http://go.microsoft.com/?linkid=9655696
! j6 m- c' H* N6 ]. ? 6 ], d- ^; ^- U7 f t8 Q
下载之后,双击运行进行安装。' c Z, a& l e! s1 Y: j/ C
(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )
+ P! P3 r/ L2 w8 o' n6 H7 t0 p2 z: k7 |5 v9 J( h3 ]* B. J
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:! h- p8 I" v2 d [$ Q! ~
- {: w% ?% l/ }+ h- Q g4 ^
7 h. E1 o$ [! A- c) g2 U2 E; D
% u/ B- u+ }! B# q1 W同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。+ o/ P2 f4 t! ~: l+ B- x5 A! }/ D' ]
) N) j+ q$ l' ^; a! [ 4 Z, E/ B& m H
1 l: N8 q. _4 a
2.下载 PHP5.3.0 Windows 版
% F: u' ^8 w% U4 i8 ~8 k' z1 X由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!- |0 _; i' h6 J" d
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
~( {/ e# J$ W6 |选择:PHP 5.3 (5.3.0)
. j" f# [! _5 LVC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]( G0 r4 E, C0 Y4 [4 ~9 I) ?
sha1: f049c806744855e4420844d47e051949fcf06661% }) N7 c6 H! i
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:
" d( `# p; c( }+ G5 z* s
' N6 ^4 g1 P& ~
5 e% A6 L# l; y5 ?. e 3. 注册 PHP 到 FastCGI 6 B1 ?3 m# s5 I5 }8 }
& `8 s( x3 L: D4 m
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
- }6 x% v/ M J; This is the configuration file for the FastCGI handler for IIS 6.0.2 x% w" v. S1 s3 {! ]* w
; The FastCGI handler will look for this file in the same directory as" Q& h4 u4 s7 I0 z0 n
; fcgiext.dll. By default, the FastCGI installer will place this file into
. K0 i- R4 b/ Z# ]9 K- r: P& K; the %windir%\system32\inetsrv directory.
) W9 H+ t+ g5 u, ^9 K
4 ~8 }; @5 }# n% {! e- \" }7 |6 Y我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。 2 L6 h3 J; T+ C9 o M% I& ~
1 i2 R$ y7 r: C% j- P
在 [Types] 下添加以下配置:
9 S! y& W* D9 a% r5 X[Types]# p X& Q& {* v% d( K
7 b0 I$ z: }. O& {( U
php=PHP
9 f, h( P# Q1 g0 k. \8 g& o- d[PHP]+ r, ~9 N( p% o* g4 u* y
ExePath=X:\Server_Core\PHP\php-cgi.exe% U* q u" b! Y5 ~4 t6 H
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
+ A$ I4 }4 N& z2 K- P4 o0 X8 K, p/ o9 `7 u8 |; ~) D4 A1 B
4. 配置 php.ini
9 v; w ?6 m; Q- G% G* @; f将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
- i5 j1 O, n; a找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面 J2 R( \& W2 h+ s% K- U
[Date]
& R1 X0 A1 ^% v! \8 p3 N3 G7 Z; Defines the default timezone used by the date functions+ [) z4 e- `* v# c/ t5 h
; http://php.net/date.timezone. a, W- t) n1 f, c; U) L; x# w
; date.timezone =; G/ g! x# |7 X8 H, C( G
更改为并去除前面的“;”: - K6 D7 T `8 ]' E
[Date]& Z! x2 K: y9 c# l: l
; Defines the default timezone used by the date functions8 T7 S2 G( e( i# `8 i- V/ Z2 T! ?
; http://php.net/date.timezone' o- I/ D- z, Y6 Z
date.timezone = Asia/Shanghai
& ?" V$ C- u. `9 `如果不改以上的date.timezone可能打开网页会提示500错误
, I: t1 q U0 m# _* E# j/ \找到" e9 \6 `* I7 ?- o. C7 a" {
; On windows:
$ f7 s6 U7 y% y) n* H7 s, Y; extension_dir = "ext"1 J7 ^8 q: [ e2 S: a
改为 Z# }4 L; G6 u8 `: Q9 w$ ]& U
; On windows:4 a6 F1 H( A' z7 W j- l& n
extension_dir = "X:\Server_Core\PHP\ext" 5 H% j% c; R# J/ {# D. |( f" [% l
: I3 w! h3 e7 J找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1 - R* \8 K+ Z+ c- O: L P
如下图:
) q+ [8 `" v9 r2 w& L
# F3 r/ h7 s3 f" F2 O8 @( c
4 Q, `' T2 u2 L/ }( j; C! l找到:short_open_tag= Off;改为
( C2 P! N2 C4 ~ short_open_tag= On
, l) k% X& X2 R* X, d _9 ?! s( d& A6 t8 ^
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
7 z/ O/ j' c7 }5 U;extension=php_bz2.dll( Y* o$ G# y9 E* ?+ \- I2 ]8 h0 _' c
;extension=php_curl.dll! W" U' H8 v% C3 X2 l9 L
;extension=php_dba.dll( H" J0 e3 @2 r+ [( ?1 P
extension=php_mbstring.dll) {+ w# x# F. a% ^5 X' z
extension=php_exif.dll
9 ^* {; R) [+ n/ K;extension=php_fileinfo.dll
' U9 L& ?+ Y4 j! w5 U( _6 Q+ Y: Kextension=php_gd2.dll: _& b* r; ~3 m/ b. q0 D- N
;extension=php_gettext.dll
, s$ n* c. a# q7 F;extension=php_gmp.dll
, k# V* [0 } z* C) N4 j;extension=php_intl.dll
$ q# ~& P' B; z) a% ]7 r* M# A) O;extension=php_imap.dll
2 ]3 c: V' A, `$ X4 ~8 o, c* ?. v# Z;extension=php_interbase.dll
: V6 ?% T5 C( D$ d, H, Wextension=php_ldap.dll
1 r' D6 q+ F8 H;extension=php_ming.dll* r" o: [+ }" B. Z! d
;extension=php_mssql.dll$ ^3 y# D" B$ F/ c
extension=php_mysql.dll# J8 J$ O, a s U
extension=php_mysqli.dll
T: I2 N! _( e" G7 x+ F g' G: K;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
' I4 c" }" ?0 K;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
. D' p* B' H% R3 R/ ?) w;extension=php_openssl.dll* p C) g2 E# X9 t5 ^3 q% P
;extension=php_pdo_firebird.dll+ `& C; T. B" D, u$ B
;extension=php_pdo_mssql.dll
( ^7 k6 V. ]+ n;extension=php_pdo_mysql.dll6 x$ M/ p2 H X0 W
;extension=php_pdo_oci.dll
; ^# u& r; Q8 l% C" W3 `, M;extension=php_pdo_odbc.dll; t. v! @# K* x3 [4 c7 I" _
;extension=php_pdo_pgsql.dll/ H& @4 \" \) Q" z' ]
;extension=php_pdo_sqlite.dll
! |3 ^; m! e4 Q4 \$ K;extension=php_pgsql.dll `# ]5 n* n' m( R. e, L. Z
;extension=php_phar.dll1 H+ U& d+ d8 ?' \) J& Z+ ^
;extension=php_pspell.dll
0 |+ \1 V8 p8 C/ F% \2 b9 A;extension=php_shmop.dll
6 a V# ]# p# d;extension=php_snmp.dll) f" I3 B& B! c6 ^
;extension=php_soap.dll! d+ f6 Z- w4 t6 v( C* V8 @/ M
;extension=php_sockets.dll
* }1 A; J( K+ F: p4 d;extension=php_sqlite.dll7 i6 C+ L9 e6 d3 R) `, _. `# f
;extension=php_sqlite3.dll
/ A9 t6 w) o6 d# W7 D1 [, B4 [;extension=php_sybase_ct.dll
+ \7 Q8 g" B2 R8 ?* _6 E;extension=php_tidy.dll8 x4 k/ n4 v7 C" K0 p; e3 A6 u. }
;extension=php_xmlrpc.dll
* T: c$ I! F; J2 u; T2 d;extension=php_xsl.dll
" [7 i9 f, s! b2 p/ y$ h* f" Y0 a v: Q;extension=php_zip.dll5 f2 q n: y1 d6 p9 m6 ]1 I, \: X
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)% I* q* |. A; `3 O! a' B
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!
; P7 m- b4 K: U# }' A; F8 O# z# Q2 H, B+ a. c# ~
( G; {2 L% {. l4 F0 M7 S% X( r
5. 配置网站 + G. t4 g0 o5 j! t. o- A9 X: `
0 h9 g: M s! k+ F2 l$ {
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
0 u& T5 z$ p, E7 X! }
: r( p% v% [. \- C: S, `' M' u) o
+ s* B, I, {, R. y0 \
# e5 t# i5 a2 M& l8 m
8 }- L4 h" W; F, {) o" m: k! [可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
. v/ C7 D/ ~' w. i; B- _3 m. f7 t' I. j# q3 b/ R( n$ g1 U
6. 写个 php 测试下吧 : S4 g+ P0 a8 U6 c6 Z+ j
8 |+ Z! @) }2 ]; E
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
; D/ G! L, a4 v& S4 @ x# k& B
5 u1 e% B) W7 x3 e2 I# {6 _% U4 d
! [" |+ O$ H0 t* F: [5 H1 R
) B4 |; k7 N# v测试是否安装成功!
" f2 Y# F- j! j9 ^/ g# w6 p1 \建立一个网站,phpinfo.php文件内容为:
; N0 r+ y5 s1 L, }- t文件:phpinfo.php
' Z1 Y' [! D' Q3 i6 u6 Y/ r<?php* H* l' }4 @: I# Z
phpinfo();- C/ l! B9 K& H; Q6 e8 Z$ s* p
?>
& }0 [4 e9 l U& }0 ]' J6 P, U9 k+ W, ~# d8 V
看到类似以下效果说明你的服务器可以跑 php 了。/ X' D. L M0 k7 N0 u

, N6 [9 y+ ~$ g& P安装过程出现小插曲,如果运行测试文件出现如下提示:
& w: Y$ {" M1 X( R先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:( }. U* j& j% \# ^. j1 Z
错误1,+ o$ X; T' l4 a$ ^2 B, G
fastcgi error" U$ y; k! G; F( O# y" h3 D
the fastcgi handler was unable to process the request.
$ {) a! m* Z' v9 I: _/ j% j--------------------------------------------------------------------------------
+ r9 z: u) F; Yerror details:7 V }4 [7 m, I0 ?2 ]
error number: 5 (0x80070005). $ C* j ]4 @9 O0 [8 `
error description: 拒绝访问。
4 Y x! Y2 G4 D. u. s y7 whttp error 500 - server error.
& _7 ]! W, p ]; }internet information services (iis)
0 n! T1 J' m$ o这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
' c0 i0 o5 l o- J9 _; \& P" K5 C d
错误2,
- v4 h7 `" j1 Y8 A. g; l, lFastCGI Error
, V+ s9 P4 ^+ [1 c2 kThe FastCGI Handler was unable to process the request.
/ q4 A1 p5 j, t--------------------------------------------------------------------------------
9 L1 k1 V3 C9 C2 UError Details:! e3 V: d8 H2 ~/ y# W
Could not find entry for "php" on site 1960240566 in [Types] section. + a5 o, p! p, j/ h, w
Error Number: 1413 (0x80070585).
" R7 R1 W' x" h* y5 n$ e tError Description: ?TD§?÷òy?£
. n9 r$ B! E$ BHTTP Error 500 - Server Error., y3 T _( p0 N1 ^' A- i
Internet Information Services (IIS)
. G0 I6 P4 ~0 v7 z2 s4 |( f& {7 i( K7 R$ J& b! \7 z% L; d5 P
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!9 d7 C0 K4 p5 P6 C4 [7 w! \ V
错误3,
/ k( {) j3 a0 h) m----------
2 c4 C: Q O# {; f7 H3 |FastCGI Error
: D# ?7 t" I% m1 v6 dThe FastCGI Handler was unable to process the request.
$ S0 `& X0 O- A& ?Error Details:# d& R4 X0 u* H0 n
- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.& K6 p& V& e% o: U+ |" F
Internet Information Services (IIS)
. s7 b1 x9 V# |% c--------" H4 Q. j/ g ~1 N! R, J" B* g
我的PHP目录在C盘
# ~1 N: S: S$ X* L% ]3 j/ W当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...1 l* Q0 g3 p4 B* O$ T
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。' ], ?8 F3 l/ L5 B4 Q; n8 `9 F
把 C:\php\php.ini 删除,搞定!# w5 W6 p- J( E6 I6 l, c
随后用FakeCGI调试工具才搞定原因..
! n' Z3 I7 W% u2 H# J( N感谢FakeCGI,痛斥我的坏习惯!!!
7 J* i) J4 }3 Z5 H5 a; i; M7 s% z5 }$ F/ t9 q; T
& j5 K4 _4 [! B. q
3 n/ R8 C! U$ u5 Y
$ q3 f/ w8 D9 q3 E4 Q, t1 i$ C1 B& k$ X8 N' H4 G3 I
PHP5.3.0特除配置% o9 g, l: [+ c+ Q7 K% L+ S7 [- {
一,如何正确调整上传附件大小限制?0 j% }9 b0 A5 E% n& k
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:
# F3 Y) c4 T! [) e) K+ A1. post_max_size =10M , f5 N. L+ I: e) C' k
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
! @ M, F$ C" `限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等.... w5 I! d( J* `% e" T, X: A
2.file_uploads = On
4 p+ F% b$ o9 `: [是否允许上传文件,如果为OFF您将不能上传文件.
$ m3 W$ w% P1 Z9 P3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\" 6 i4 b# `$ ]6 u6 O3 Q# y
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
& _8 n* N* O) X' e) l H4.upload_max_filesize =2M 2 b+ G2 W+ K! A* X3 X
最大上传文件大小,此项针对上传文件时单个文件的大小.
8 g. L+ f5 I7 r( R. r与post_max_size之间的关系:
/ G9 x* O' A0 K9 ^; p在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
- R* p" H- q1 E7 l- {( W7 k修改之后一定要重启 Web 服务。
" h9 a/ a- i* \- y7 j# I注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.5 j; {1 w* T* ^0 Z9 p: v
二,EXIF信息服务器配置说明:
+ F) v: w: F- _7 I) f1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
7 f2 A+ j$ s% i, q2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前4 @/ `, k U: u2 W
3.找到[exif]段,把下面语句的分号去掉。
2 k3 Z9 [5 f8 d) S' h6 q7 R H;exif.encode_unicode = ISO-8859-15
. x% E0 b! M. o2 W;exif.decode_unicode_motorola = UCS-2BE
@1 m. }2 ~8 S, i+ s; V;exif.decode_unicode_intel = UCS-2LE- o6 J9 e! P9 E+ |5 p& n) Q
;exif.encode_jis =
' q: m/ ^( P: f, J/ n/ u;exif.decode_jis_motorola = JIS# `5 W, H' d* q5 r+ b
;exif.decode_jis_intel = JIS! u9 ]4 ?9 Z+ D- k( J6 e& L/ Y
PS:
# l" Z$ @9 Z4 A, g; a0 |安装版PHP的方法: . Q( H& ?3 r+ ~" e; @5 L! V" R. B
点击NEXT
+ s( ^# ?4 |% D9 d) p9 P8 k
; U& x/ C2 \' d* r' S4 y打上勾同意
3 {5 B. S$ |* X / p9 }2 y: S& ?7 t% Y+ {' u. ^
出现安装路径,默认路径,点击"Next"; `: O) J$ \6 g. ^% e

1 |( a' P8 c+ l& J8 G在这里选择:IIS FastCGI,再点击Next
3 b3 U/ ?! Q: a5 w4 a' l+ E+ g0 z |/ h( h4 w& A% C3 ~, c. k9 v! m
然后在模块里选上
" T1 J7 F9 p/ t Lmysql3 A5 A: M% ]& ~% @6 T1 i
GD2+ s* z( Y, L$ d- c* ?) p; X
Multibyte String
- u: ^4 r/ g( V% I( ~ Hmcrypt
; ]5 t- E+ e" v) l" \之后点击"Next",安装成功!
( d4 n# t( w; z3 ?9 w$ Y, v7 _/ @+ @* U/ N, @+ Y
7 v- n; x" h4 O- U, ^7 P D9 A6 d* I9 x5 J5 q, q
待续: |
|