- 注册时间
- 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的完整方法
5 @0 p) O* J8 { f9 o在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP& b, B$ N+ A$ V+ @# e
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.06 `6 x: y1 j' a$ E% U! d$ i
微软已经和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安装方法我记录下来,其中包括出现的错误.
5 {! b, o7 s! ^9 |1.下载 FastCGI For IIS6
6 }1 |9 }* l7 e' S* L9 D% Hfcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)7 d- u8 c) p3 C/ Q
下载:http://www.iis.net/extensions/FastCGI,选择: x86
; j7 E6 l, T: k9 a( X
" s1 G* P' q6 i9 h/ }% s- q5 S$ J 
; s, ~0 a4 I' o3 W
" y4 r7 u. a3 X7 W7 n( @# S3 i或者直接下载:http://go.microsoft.com/?linkid=9655696: W ~5 w* U V* V5 x
9 O5 w4 S" X# l6 K" k, Y下载之后,双击运行进行安装。8 y) p/ w4 h9 ]) _; v4 T/ B0 }& |
(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx ) Z0 s/ L+ w3 U. ^; l0 M" W9 V
6 v" T! `+ z) x4 {8 M
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:1 C( @0 w5 I* J4 D$ I2 d5 X" X
5 b" K+ i1 y9 Y
9 a/ k. j: s# G$ M5 m$ m( _: T. l) C% G& k p B% k9 v7 Z z o7 o
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。7 F9 d0 t" V- E0 _: ^: _
& G. q( f2 F; J6 d ) P" _. k4 x9 Y2 H) ~ d
$ u3 q6 e/ ? g& Q; o8 T) \2.下载 PHP5.3.0 Windows 版
1 [8 e* w1 j" z由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定! K" g4 {3 |: {5 x% n: |
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
3 h" X" r& Z- V3 j选择:PHP 5.3 (5.3.0)
7 E [: F* Y/ R% bVC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]; i6 m9 K8 a# R$ d* @! B* R
sha1: f049c806744855e4420844d47e051949fcf06661! E- t- C0 Y; W7 W- M$ \
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:. ]) K3 z# h q0 ^* L$ t- c4 R

V3 t6 N. T3 p( ~9 [" ~# {: x2 i! c, \2 K3 d9 R# Q
3. 注册 PHP 到 FastCGI
. P8 t( M' j% |6 F8 p6 e1 ~
9 n" m& c( n7 N3 _0 A( {& x& O打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
3 ^) V1 U+ W# U; This is the configuration file for the FastCGI handler for IIS 6.0.
7 v8 \0 S7 b9 B& l( O; The FastCGI handler will look for this file in the same directory as
8 c0 _; ~6 V. [+ r7 w: A" p8 i; fcgiext.dll. By default, the FastCGI installer will place this file into8 h! r7 L. A. H- w: p( x) V
; the %windir%\system32\inetsrv directory.
, a" e5 K0 G9 J ~
# |+ k( T0 p5 H5 J我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
6 [3 O# n4 C f! W0 F! Z* w
2 D9 D" A V4 X( ] Q. _1 K在 [Types] 下添加以下配置:
" D, t+ K2 c- ]0 X5 h4 r6 g( T[Types]* k( I: H+ C- _9 q" ^$ l9 r
7 i- r5 L; {9 J7 l
php=PHP' r9 l `- g5 S0 w8 {0 T
[PHP]( s; Y0 k `# y% [2 x
ExePath=X:\Server_Core\PHP\php-cgi.exe2 H* z; ^3 i# o5 i# U2 l9 V
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)! u. t# n) t' t2 t
5 d& p' s- x! n: t9 w" k( O4 t6 M4. 配置 php.ini : @$ c/ F6 |' U1 ^6 w
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
3 G; X4 ^& g3 D, o) @5 d& Z- a' P" v4 X找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
3 r( { j2 P( ~* G[Date]: B5 c' S1 M$ N" H' c: T; ~
; Defines the default timezone used by the date functions
3 e1 |/ B. N; b& O, C( ]% C5 j; http://php.net/date.timezone
7 R5 q+ T8 V1 p% s. D; date.timezone =: n' q3 S1 m1 T. m4 o5 a* i
更改为并去除前面的“;”: , ]3 w2 A7 i) d; T* v
[Date]' B7 y& g7 A7 q- V) A* p6 N2 G1 x
; Defines the default timezone used by the date functions
$ ?* K; u# m# f0 g; http://php.net/date.timezone
: f; [- K/ _1 w$ N9 L- ^6 ldate.timezone = Asia/Shanghai
! N$ N6 e; H5 C5 [2 U, q6 u" x如果不改以上的date.timezone可能打开网页会提示500错误
9 a; G f3 j, A: |+ B4 ^找到2 ^+ A% ^) ^* M4 j Z# z/ g
; On windows:
4 F+ O. b: `" A; b' d; extension_dir = "ext"5 L9 G4 J0 B! Z3 z* X2 `: }/ b9 m
改为
' t2 N6 c2 h7 q6 f2 j- ?; On windows:1 I1 u; o! U4 Y/ f- ^7 ]- c0 a: o
extension_dir = "X:\Server_Core\PHP\ext"
) K9 `0 z# `: x- r
* u4 X5 p( X& n* f) a& U( v找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
! y3 L5 u6 B( x如下图:
/ W7 ]: N6 _. v. l; w5 A h ^( z! I, o. `# A
l/ L9 I% u: |3 Q Z
找到:short_open_tag= Off;改为( Z0 I4 h& {. U/ N" I
short_open_tag= On h# d8 C/ e, |# N6 \
. [8 G. H/ i& G
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是 X3 ? z% j- Q
;extension=php_bz2.dll4 Y; A) |2 |( ^+ H6 j9 j. a, W
;extension=php_curl.dll* n w5 ~( A- G* o* m
;extension=php_dba.dll( x2 d+ M9 w7 }* z' \7 ?
extension=php_mbstring.dll
9 R/ P' n, H, e. a. o# H' Xextension=php_exif.dll$ M/ H p; j$ K* J0 B$ h7 e
;extension=php_fileinfo.dll
6 {* }/ P+ l% r' G+ Qextension=php_gd2.dll8 S0 ^* f6 Y( O
;extension=php_gettext.dll
' ^" Z7 i! i- o0 g5 H" N;extension=php_gmp.dll
) p$ T1 f2 {! X# x;extension=php_intl.dll* V1 Q: ~8 D; b9 `( G) |) j$ q
;extension=php_imap.dll
5 J& \8 Z. C6 I4 [/ F0 z, r;extension=php_interbase.dll
5 w# o8 _; N0 {extension=php_ldap.dll
8 N( @2 Z+ X2 T0 a8 [. r;extension=php_ming.dll
" ]' R& }' p- |8 V& h3 q& \;extension=php_mssql.dll9 v; R* L- N3 t0 s: p+ K. X' I
extension=php_mysql.dll
$ S1 j5 {' t' e, xextension=php_mysqli.dll
b4 `" V% p* L1 Z: Q& C4 y# i;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client2 v8 ~9 k$ G! Q' w
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
& r# s4 A X! X0 m( o, x;extension=php_openssl.dll8 o" e1 n9 M' H- G* o8 t# @3 o2 a
;extension=php_pdo_firebird.dll
2 M! v! c! U# `; _) v g' i- t;extension=php_pdo_mssql.dll
+ [! T/ ~3 V6 ^9 Q;extension=php_pdo_mysql.dll
% w7 e' @! w8 y% ^& N4 v% g a;extension=php_pdo_oci.dll
7 d- [5 F8 Y# g) i) N3 V! l% \: Y- W;extension=php_pdo_odbc.dll
1 H' L& {# e# @" Q& ];extension=php_pdo_pgsql.dll3 r2 y( P Z. c/ @# [& X
;extension=php_pdo_sqlite.dll
$ P6 P) l B$ Z5 y;extension=php_pgsql.dll0 {+ N: p- h7 l7 a- `9 A0 {% u
;extension=php_phar.dll9 w: r" E7 _7 P
;extension=php_pspell.dll
. m# h9 B1 J. Y) A- \;extension=php_shmop.dll
) j3 S* r5 ~! A- _3 ^& ^) {! v;extension=php_snmp.dll: C5 l/ J+ q g3 B7 I- u! Y
;extension=php_soap.dll# E S8 ~7 I9 h% @: n E
;extension=php_sockets.dll- Q9 E4 \8 s4 Z: U6 A w
;extension=php_sqlite.dll
: u, A: S$ H- q7 O/ S3 U3 j" l( h;extension=php_sqlite3.dll
7 D6 I3 m1 n6 Z7 W* B' c;extension=php_sybase_ct.dll% o4 Z$ r% ?' I% b1 n% h% v8 M( I
;extension=php_tidy.dll* s6 v4 }; `3 U
;extension=php_xmlrpc.dll
+ @' H! U& d5 e6 b& j: [7 p- e;extension=php_xsl.dll
& S4 a; m; P- U+ t$ ^4 E;extension=php_zip.dll
: k; `+ P1 K5 a, d注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)9 p7 l# y' v! W; x+ q! `! P
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!6 z( \7 K, T2 F+ T; R
2 j' R1 x4 ~6 d. a1 l" w* @
t8 K. s1 N2 \9 X5. 配置网站 # d+ p7 w* J: l8 v9 c1 R' l
* B1 Q+ K i7 _8 x! a' w7 y9 i- r- l打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
& F5 _% {; y4 k- N( w- `; o" ?& \% D
* l7 H3 d, j8 o/ a) g
2 h2 q( z- v6 }1 \. e
9 _5 H) F: w2 P9 D* o' d可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
4 L+ M: z0 r, b- H8 W' c) E* S1 Q# Y% R c6 b
6. 写个 php 测试下吧
' ?, h3 b, f, e& W. p6 O8 k! K5 J/ Q3 {; M
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!) o+ l7 h V) |/ n
6 b3 h$ L/ \. b+ c% C d; {8 X" D* n% {' L, \; R. V
& f) d9 Z* j2 \* ?! j测试是否安装成功!
5 {1 U) c$ Z. D( I% v* L; I建立一个网站,phpinfo.php文件内容为:
8 y8 B( q- t9 P" r, H文件:phpinfo.php' y. Y/ L5 ?8 z
<?php6 B; m }! ~+ i
phpinfo();4 V( m4 S/ O# ~$ |$ c% H
?>
/ V$ ~8 \$ B- E" U0 q. F2 h* S& Z+ J' Y% `6 @. N- t
看到类似以下效果说明你的服务器可以跑 php 了。
9 n: S" u- N1 ~# N/ U% E+ _( n: s
( V( E5 D. [# Y5 B* H: X* t0 M: F( k安装过程出现小插曲,如果运行测试文件出现如下提示:' A8 e! x; `8 W5 C4 o3 ^
先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:
; q8 `( z3 D& z- S错误1,
' b* ?/ ^9 m$ J( `; B; afastcgi error
) d: D$ q+ S4 Sthe fastcgi handler was unable to process the request. # u% `5 l" c5 p8 N* ^2 y9 O6 t
--------------------------------------------------------------------------------. ` X& h) `7 {" v/ k6 |2 x
error details:7 C3 S( k7 d% \1 G
error number: 5 (0x80070005). O; K1 \2 k9 D* e* g! y
error description: 拒绝访问。 n$ c) r) Z" P0 ~$ I# y0 i
http error 500 - server error.! y+ B% p% {; t2 g% }
internet information services (iis)
/ o. h7 ^' s; u6 T B8 f3 {# S这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.+ @/ |7 _8 a$ w
& y' \! K x+ e% d/ Y
错误2,+ Q8 W7 U j; u' L# p
FastCGI Error7 L9 O2 h4 T# {% ~# F, U
The FastCGI Handler was unable to process the request. : ]6 T: n1 ?' I; r
--------------------------------------------------------------------------------( y2 j+ x- p( g4 i5 V7 V$ K
Error Details:
. Y Z* z! z# d8 c( B4 o8 n6 K4 Y% cCould not find entry for "php" on site 1960240566 in [Types] section.
/ y4 D7 f% [+ G2 L+ ^Error Number: 1413 (0x80070585).
! s! d. ^7 I2 e# t6 pError Description: ?TD§?÷òy?£
0 |5 ?4 X: R j/ F6 E0 Z) oHTTP Error 500 - Server Error.& p9 J% A4 F9 \1 I" ]7 c
Internet Information Services (IIS)
: h# H3 |) G: \3 M/ x. x" Q
8 [* X; G+ j, q y, @2 ^9 o; X即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
3 r9 q) O1 K4 e4 \$ a错误3,0 ^* r; \6 u$ d' n* `
----------
; Y1 `: O$ b9 \, ]2 @) fFastCGI Error 1 D$ [8 E/ _2 J5 s# S6 J9 D
The FastCGI Handler was unable to process the request.
# w# D; @& _2 c6 c% c s9 _" n# }Error Details:* _" H) ^( e4 a) B1 ^5 Z
- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
4 ]# S: j9 K9 Z$ U5 ^Internet Information Services (IIS)+ T5 f# `* c9 R" {
--------
- B2 v! I: g2 B' [我的PHP目录在C盘 $ A% K8 Y, o! A( K% ]' r) [4 ^
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的.../ Q$ `0 H) A+ V- M7 X2 E% h
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。9 t2 Y5 C' N" u x( s
把 C:\php\php.ini 删除,搞定!
r2 J; \' K4 T0 v+ a8 x随后用FakeCGI调试工具才搞定原因..
) ?0 `5 m' v' o% i" y- @感谢FakeCGI,痛斥我的坏习惯!!!
+ N! ], M- w8 t$ \" c+ C
0 | A4 ]. F; a* D4 l* ^, s8 w, C
4 e7 ?. W5 J5 j
+ @- q0 `) @" I+ C$ f1 z
# @1 U; n0 e; N7 @* A, r+ D
7 i7 g5 F5 D( g& ]4 lPHP5.3.0特除配置
s" x* Q; k0 n8 C4 d* U; h一,如何正确调整上传附件大小限制?# p p* [# `! }
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:
8 w0 s# D. ?" P9 b8 i6 j5 a1. post_max_size =10M + e1 u/ @# _' X E
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
* S4 b& E2 `. ?: h4 t% E限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...
- u8 z# H1 K, Y3 E2.file_uploads = On
- B! c7 O# z+ S$ @0 u" S7 o是否允许上传文件,如果为OFF您将不能上传文件.
2 C2 C- m8 }/ }5 c* M) J. M" z3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\" 8 h5 b1 A8 z7 S- a" @% h
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
9 Z9 u9 {: m5 G D9 E4.upload_max_filesize =2M & A: n2 \/ b0 @8 z) |1 V6 r
最大上传文件大小,此项针对上传文件时单个文件的大小.
0 C, q2 a" g7 h# }( ?6 u与post_max_size之间的关系:; o0 r, S' Q1 T$ r: t
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.: G; ^+ o: A* @7 E
修改之后一定要重启 Web 服务。
- @, G/ h: M; d7 ^/ c; N7 d" b+ _注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
2 k, W- L1 m8 J! I) F/ \二,EXIF信息服务器配置说明:
, S r) s* c; A$ ?1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号: T0 }6 |5 u/ D+ K8 T% l
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前( C7 E, ?- r7 |1 g3 g
3.找到[exif]段,把下面语句的分号去掉。% \8 w- l" n! u
;exif.encode_unicode = ISO-8859-15
& k' J7 m) e. X1 y, \;exif.decode_unicode_motorola = UCS-2BE
; {+ X m4 n: _( q" u# v' B;exif.decode_unicode_intel = UCS-2LE
0 j/ q9 d/ F( w;exif.encode_jis = * z( w3 _/ Y4 }" S& ~' r
;exif.decode_jis_motorola = JIS, I& p1 I2 C( p( r: E( X) I
;exif.decode_jis_intel = JIS- s+ j9 z4 Z# L q
PS:0 Z+ n. l9 i" Q7 K7 w
安装版PHP的方法: 
6 s& d% s8 J. O点击NEXT! k1 S& `* p0 U% u( z; z
' t1 |6 J6 m- U5 l& L
打上勾同意9 ]8 m, H1 @, ^8 N$ d6 ]

$ W/ G5 ?* g" ]/ Q: ^ J; S出现安装路径,默认路径,点击"Next"' Q% R ?/ Y6 K/ F

: r9 V1 M) b1 m8 }在这里选择:IIS FastCGI,再点击Next. [9 s6 F& X1 ?. Q3 L" [

6 t1 V8 z0 m( o8 V; b然后在模块里选上. y% [; i+ A/ Z& G |# T
mysql/ l+ {& `) `) S+ I0 }( m8 U7 `
GD25 \9 c2 V$ S# C5 f7 t
Multibyte String" x& w( ]6 y/ M; O* S* v1 }
mcrypt- }' X5 o1 q+ \. R, b+ s U! x" Y
之后点击"Next",安装成功!
( }# } J O: l$ `4 a5 U
/ \2 a) S4 l8 q* y" m% |! J+ I' W8 v* c' L4 a3 e p- I
+ Q; j; X% b; ?( O& Q! Y
待续: |
|