- 注册时间
- 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的完整方法
`2 }' B4 D( N在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP; W( C" {- n! {1 A
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
+ H# F8 e9 r& U/ W. W微软已经和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安装方法我记录下来,其中包括出现的错误.
& l9 A9 r- w4 C2 {* V1.下载 FastCGI For IIS6
$ c' R) Q$ R i3 `) Tfcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
% ]# k0 v0 M" {+ o) r" d! B8 z0 o' N下载:http://www.iis.net/extensions/FastCGI,选择: x86; g& e' u& _0 ^3 D
1 X: y/ l- i6 d e
3 _/ K d' [8 K( k* _! \! m1 t+ N
+ D9 l7 }% V; x, b: y2 E( W
或者直接下载:http://go.microsoft.com/?linkid=9655696
; ]0 ?! p; }3 S: B% I/ G/ e3 ]. e
! _1 X9 Z7 L _$ n下载之后,双击运行进行安装。
" e3 j0 @' S) d; F: l& V(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )
% D8 H( i2 g u: T) }% {+ ~" ?# W! T, w$ u, ]7 d/ D
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:5 @3 B: ^+ g- N) D" P( f4 _" P7 ~ n
" w) Z% |, u6 p0 V7 x5 q4 g
5 W. {9 s$ n C) Y0 E9 I0 d. q' u
( ?2 j2 Z7 ~1 g9 r同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。; H: w& j+ w- X' _
: \# e+ F B x/ I
* V9 k( h# j& F s5 V! ]$ g9 {
. [6 \1 {* T8 h o0 e7 @# H% M2.下载 PHP5.3.0 Windows 版
0 |# w* ?! F& x; T) M由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
1 u! l5 z+ m$ J5 t K: N新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
+ @9 ? t7 n! b: q) O- p选择:PHP 5.3 (5.3.0)& _4 g+ Q$ J/ C/ Z
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]7 g8 t, ~/ o, W
sha1: f049c806744855e4420844d47e051949fcf06661# F7 T) \. l+ d' ?
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:/ e9 x% b" Q c* L
& Y. |% Q$ G: j( K5 I! W6 F
, v8 {8 v/ w: X4 D" a7 x
3. 注册 PHP 到 FastCGI 7 W* J8 _0 M# [. V' W
, t- X* F) k4 \) Z9 n, v
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。+ ^) W2 Z+ ~7 x9 {. \9 K# S( b
; This is the configuration file for the FastCGI handler for IIS 6.0.) L$ o2 V: k$ h
; The FastCGI handler will look for this file in the same directory as
, ~8 K$ u% F+ J0 B1 k; fcgiext.dll. By default, the FastCGI installer will place this file into$ Q, }( Q* V/ j) F3 L
; the %windir%\system32\inetsrv directory.
! Z2 ]' z0 S. I
% g7 _( O& J0 s+ j0 L" c2 J我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。 ( i) [1 I& ^/ A
# J' w7 `2 N5 T# c- E4 g# s9 E# ?5 k
在 [Types] 下添加以下配置: # V$ ^+ v% N; K
[Types]0 g5 N. v8 x# w; H# ]
) Z# f' P! S- ]: ~php=PHP
' o3 f) |2 P2 n A& k' L0 @' T[PHP]
# o# Q) {( f( t6 S& sExePath=X:\Server_Core\PHP\php-cgi.exe9 Q0 n7 \/ _8 l" r( U( n0 p: K6 X5 Q2 D
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)9 M. U6 n3 W' B8 U# Y& |, r
% c% W8 N, Q" k1 p4. 配置 php.ini , C" k* Q, b' J! m5 `5 X
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini 7 B! Z' w, v( [
找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面' _6 _5 z" D! a
[Date]' n$ \# l$ ~' v
; Defines the default timezone used by the date functions
2 b5 Z9 _# A) w6 H3 B, k- {; http://php.net/date.timezone( a0 R3 C. f2 ]3 P
; date.timezone =# O& k& r7 ?( n# |
更改为并去除前面的“;”:
/ M d. Y3 k9 H8 M2 Q5 N[Date]
) `; T$ s- t' h5 i; Defines the default timezone used by the date functions& e# r* G, G1 Y6 M4 x- V/ n& S
; http://php.net/date.timezone
, Y, r; \* r9 I j& ]' D) idate.timezone = Asia/Shanghai+ E& |) o8 U) d3 S
如果不改以上的date.timezone可能打开网页会提示500错误
% n2 Z9 k) c& Q9 M找到
! W8 f7 b6 ^' u$ \* t" E; On windows:, t( o3 D# w+ t+ ~8 H6 h
; extension_dir = "ext"4 U+ Z5 @" D5 Y6 |2 S( x* N& r: p
改为4 P; a6 r1 |: p) r4 H4 o) r/ d# E
; On windows:
7 v7 e- H6 P1 A; I' Gextension_dir = "X:\Server_Core\PHP\ext"
' I, g* P8 B5 Q& g
e. n1 |7 ~+ a9 H+ t找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
9 b( {. \1 C4 z, A/ \. i! z如下图:3 T9 G/ Q1 e5 w6 n
- ]4 Y; w" h+ m7 g5 }
: D# T" h( c) B1 f, V
找到:short_open_tag= Off;改为( b6 I3 m# E% Y4 I; O5 o
short_open_tag= On5 O8 L* V4 Z+ r. I) w7 @
5 a8 G( D9 V; H+ f4 Y2 s* w" I# t, C' N; w
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
) z+ H- {0 B' `4 j. t;extension=php_bz2.dll- v# P2 O# f) i9 l) m6 D
;extension=php_curl.dll
: X# Z* k2 ?+ E;extension=php_dba.dll
9 H, q6 P: o) x0 Z; u. nextension=php_mbstring.dll
% f! _& B: o; ~0 Textension=php_exif.dll
& @. T* C% n p) |4 Z;extension=php_fileinfo.dll* Z+ M/ J: ?& y; J
extension=php_gd2.dll
7 ?( m8 r$ T7 f% `;extension=php_gettext.dll
) Y) M" p# u3 K2 P6 q% N! l;extension=php_gmp.dll
& R' @ U- j3 C0 }& G1 u7 {' s;extension=php_intl.dll
' r1 N6 Y" c( U* n3 n7 ?2 _;extension=php_imap.dll
, w) _. N; [' e2 G2 x& c* B9 F;extension=php_interbase.dll; M- A: ]: ?; h' s
extension=php_ldap.dll" { T3 F: k9 Q" R4 S
;extension=php_ming.dll
! N" \, g/ E# i; g, L/ {+ [;extension=php_mssql.dll4 ?! V* [0 H' n3 P1 f
extension=php_mysql.dll7 r7 W, d8 Z$ Y
extension=php_mysqli.dll
6 K3 U- x* n$ q0 [;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
: I# {) g# c+ L0 L, T# N;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
& X+ |6 n/ T/ b4 o' ~# \;extension=php_openssl.dll
; M r5 g+ i, M7 u$ m5 L4 T;extension=php_pdo_firebird.dll
5 S {, L. i5 ]. q) K) k! t" S( [' |;extension=php_pdo_mssql.dll. q. F% F1 t1 J6 Z
;extension=php_pdo_mysql.dll0 |& P% {" O6 ]$ P$ _
;extension=php_pdo_oci.dll
$ Z1 G1 q, W G+ z$ |8 F0 Q;extension=php_pdo_odbc.dll
* U; k# W8 n+ u( n5 c2 F;extension=php_pdo_pgsql.dll6 ?& \( A4 z0 h+ ?# K
;extension=php_pdo_sqlite.dll
) u0 q8 P5 T% r$ f;extension=php_pgsql.dll y' x9 h) @/ k( g3 W: `5 S
;extension=php_phar.dll
2 W8 D/ z" P; z;extension=php_pspell.dll7 F6 h9 o/ W* O/ \1 H6 `
;extension=php_shmop.dll
9 d) |5 q( T% w& c;extension=php_snmp.dll5 u" m9 d y3 K |4 x
;extension=php_soap.dll4 z+ x0 b# Q% }4 a
;extension=php_sockets.dll6 G( h+ Z3 \/ W4 C) |7 S$ U
;extension=php_sqlite.dll) d, @! h% `* T `6 |! A w
;extension=php_sqlite3.dll
' e" a4 @! H- f! L;extension=php_sybase_ct.dll) @% a0 a; t" c5 k
;extension=php_tidy.dll
1 {( T! E9 K: w2 M# W;extension=php_xmlrpc.dll
7 P; D" W X4 _;extension=php_xsl.dll
7 s0 ]+ ?; |3 M;extension=php_zip.dll h0 k9 a# _& e8 r5 t
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行), X2 U, R) i0 n' I) L3 m8 D
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!: R$ @7 Z$ v$ s9 s9 X5 R5 x
7 u; {: ~1 k0 J, E0 \% P. @+ V
. P( v# i0 C1 {! B( v/ z% k5 {: [5. 配置网站
5 y8 e4 l; F. g s- ]$ z7 p4 e( |9 H
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
% D. v% f0 T2 k7 L* d
" |9 d; y3 i, ?- [7 T: n3 I# V' K

0 s3 w3 a' A( Q7 \! i5 D* q
$ S q: y6 n/ d3 ^" G) {# @2 m可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
. ]" x4 t: D C
1 u9 @0 C) q' [8 z6. 写个 php 测试下吧 . R5 D. S' O5 v
! D9 A: N5 d4 I' c: W* B& h. [4 \
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
+ w) `5 M1 J& P7 `& R4 o* `$ I0 P, z+ b/ ]# l
# X+ {3 L u, {; _( [5 ?- @
& b V3 p$ e4 Z2 g/ A测试是否安装成功!8 l0 e& A* Y) E4 i
建立一个网站,phpinfo.php文件内容为:4 U ?/ g5 [: A% h
文件:phpinfo.php d( _ l+ L6 s9 X4 R
<?php6 y* W% E- |- ~* o. z9 Y
phpinfo();
( t) U! H7 R$ l" D2 C?>
% g- |- w: m4 R2 X2 s$ l/ g+ z3 p& _& I* \
看到类似以下效果说明你的服务器可以跑 php 了。' o/ \! S9 s- l; y+ y, x" r

' T- K" D8 Q% W: [1 l! l安装过程出现小插曲,如果运行测试文件出现如下提示:
+ h7 c/ G k$ c, A3 `5 Y$ ~, U先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:
5 e( C& W5 s) A/ n# Z! A错误1,
$ X, U+ P% ?9 [fastcgi error7 v7 m3 F% s) X q p; `" E
the fastcgi handler was unable to process the request.
6 R% w& X# Y- y6 B$ `--------------------------------------------------------------------------------
6 u& r$ Y3 z& ], u: cerror details:
: }) ^, V# [6 T& }2 N/ \6 x, lerror number: 5 (0x80070005). ) q7 u0 C4 H) A) x. c# M
error description: 拒绝访问。 2 q4 q# w7 W. s
http error 500 - server error.; `( t2 a5 c v, f2 J# ~# @, J
internet information services (iis) }5 [4 r5 s- ~6 D: ~! P% \
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
' X5 Q" ~+ k) Z. z, b" P* u6 ]9 h$ N( L, P1 D6 D* r: r
错误2,. ]/ ~$ X* h$ P- E1 B3 r) f
FastCGI Error2 H Z/ c( o8 ]
The FastCGI Handler was unable to process the request.
$ v: ^5 N) Y/ a$ S& y: l8 k--------------------------------------------------------------------------------8 W3 r/ N6 D1 j t
Error Details:8 I( B( c7 O. x
Could not find entry for "php" on site 1960240566 in [Types] section. 9 D- J& e; _& s+ g' ]: Z# w
Error Number: 1413 (0x80070585). ; v! _( e8 f4 Y
Error Description: ?TD§?÷òy?£ 7 R9 A4 i' C5 U6 m+ ?! A$ p4 n
HTTP Error 500 - Server Error.
: [4 L$ C2 t+ k, BInternet Information Services (IIS)
$ K9 P. j% i* v5 G; e2 A- w6 `0 e# _9 P5 l
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!4 }8 g0 n/ J! K: v% O6 C5 F) d T$ D, z5 _
错误3,$ Q& i; U6 m! n& i3 k
----------
0 l* `3 g. ^9 f, i, S( R0 ~% KFastCGI Error * m* s. o. v0 D. N: l1 {
The FastCGI Handler was unable to process the request. ' m1 o e) z% m. g6 w5 o& r
Error Details:
0 D2 ?7 N7 c$ ]) z, o- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.6 L! t* \& K, z! i5 e7 d6 Y; o4 S$ J, C
Internet Information Services (IIS)
* i- C0 r' X, j/ t--------
, h4 n& k0 ? ~2 }: z' q我的PHP目录在C盘
( k! A% [$ G/ `# {当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
2 ]2 n$ y& Y+ R8 @结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。5 w+ S+ _" F/ k! D: x( i
把 C:\php\php.ini 删除,搞定!
6 x. m) |: g$ m1 p1 {% I& B随后用FakeCGI调试工具才搞定原因.., K2 k3 v7 C. A
感谢FakeCGI,痛斥我的坏习惯!!!' N1 x9 l5 `5 A4 F
, G9 M; J) ^8 S$ {. b
! ^5 M0 y6 W/ T3 g6 ^
2 K( M$ L3 F- p. k& z, z! Y# E; J- b1 H6 P8 n
) o- x R t9 P5 {PHP5.3.0特除配置
' P$ V. j/ `" ~( H一,如何正确调整上传附件大小限制?
. Z0 V# R) _9 ~/ f. e修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:
6 J6 \4 n8 v; ?; a1. post_max_size =10M 3 y9 V8 L' f- g! j8 j' J5 e% j3 @. l
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
2 M9 T* `" o! w! H! [限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...' L: C+ s. j: N: q( a J
2.file_uploads = On
# e# l; f0 r7 R' A5 w是否允许上传文件,如果为OFF您将不能上传文件.
0 u# I6 |! c. l' {; F r7 V1 e3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
+ ]5 k5 N* P) H9 A上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
5 y6 Q0 Y, h" a3 p; F1 a# V4.upload_max_filesize =2M
' L- X' z( {0 f3 _# X最大上传文件大小,此项针对上传文件时单个文件的大小.& c; k/ {* m K
与post_max_size之间的关系:
$ R2 o4 Z: o+ L" ]在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
5 o) u k# L9 B修改之后一定要重启 Web 服务。
" T \8 T+ ~; q7 l6 w7 w注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
5 Y. ]1 M0 v! q二,EXIF信息服务器配置说明:0 G3 Y u4 H0 t6 f2 y/ `6 S
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号/ o% y- x2 ~# j! V
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前
( t; k1 T$ `" M" t; E/ b3.找到[exif]段,把下面语句的分号去掉。
3 D1 H4 i& h) Q* A;exif.encode_unicode = ISO-8859-15
( ^& }4 H: u1 i1 ];exif.decode_unicode_motorola = UCS-2BE
4 E3 w1 X4 F# v5 o* Y( m;exif.decode_unicode_intel = UCS-2LE* [2 b6 e5 B9 m
;exif.encode_jis = l0 U5 o3 f* P$ O) ^
;exif.decode_jis_motorola = JIS7 D- ]2 P e7 K6 V/ w% l( O
;exif.decode_jis_intel = JIS
2 ^, b5 Q2 S1 DPS:, \1 e5 k. _ s
安装版PHP的方法: 
3 J) C; w1 G- d' z点击NEXT; F; `; z6 b! Y; ~4 K

5 [7 ?5 D5 N& V$ w0 S, p' y4 }* E打上勾同意 `3 t. Z: Y& \* \7 p9 c

7 ^8 V4 |, {. Y8 t1 w1 m出现安装路径,默认路径,点击"Next"
8 ]+ o0 Z/ p% Q# Z' Q6 r/ s) ` ; `# ?2 r0 F4 J' B- `5 e
在这里选择:IIS FastCGI,再点击Next
+ x( f* L0 R# S5 { 8 }; Z# i# u' s% H2 z
然后在模块里选上
% q3 Y7 J1 N% G# X0 ~9 ]mysql: c; N. x, I( n* y3 O* |
GD2
[) g0 ]* Z2 @; d" AMultibyte String! R, t8 \7 G$ J; D
mcrypt
: D, T3 Y, s) J" c) _之后点击"Next",安装成功!
/ c) I! s5 e4 v! v! F. k" G
- e/ y% x3 d/ _9 E2 w* w8 F: p; F1 u Y0 q% {2 t
`5 u8 i* x+ C8 R" I) c r: e待续: |
|