- 注册时间
- 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的完整方法
0 J/ B9 ~* r$ W在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP0 F6 @9 g4 A d5 m& A K5 w
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0- S) I/ x2 f' R; D* U. O
微软已经和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安装方法我记录下来,其中包括出现的错误.
8 s+ l. C7 {( ~ @1.下载 FastCGI For IIS6
. ]+ b$ @9 B! E. _9 ifcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
; `- n. L' y+ {# \, E下载:http://www.iis.net/extensions/FastCGI,选择: x86
8 ?, m& q. }0 \7 ^& W: P2 ^- v' d& ? K6 j* n

% x) {& _2 u5 L, @3 R! k! c$ ~ U& P
9 O [1 M/ y7 f0 e4 f' L4 x; P6 Y或者直接下载:http://go.microsoft.com/?linkid=9655696
4 F* s: K& U9 V9 _) I. q
& {$ y- r1 l6 f$ I5 q& J' B下载之后,双击运行进行安装。; L# X/ e7 h4 L+ W4 M( u8 z+ x% i
(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )
7 |# {) Q8 j: G, }3 D3 t, ]! L- F; F. v3 K3 S
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:: T0 E$ M9 e+ G% _. [" e
. L2 @, d' E- l( ^
1 P: O" W5 |# I' k, Q# x
( K& i3 g' @- |4 o8 o同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
0 l/ y: U$ S5 b: A% q/ \. U+ f _. ?7 v( p% C2 N" e
% p" @2 k: r( ]" U9 W2 Z- S
' ~* |$ `5 P" ]; y8 a8 [7 }
2.下载 PHP5.3.0 Windows 版
* r4 x6 L* S& M3 Q. i! W由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
6 W* U g7 L `# F& y+ n5 K: r新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,, S: v, q* X% M6 M+ T5 `
选择:PHP 5.3 (5.3.0)5 S# f) w* [4 m+ v. V' G' g
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
7 [/ B' g/ o# Q8 m; j( I4 {sha1: f049c806744855e4420844d47e051949fcf06661
& D$ |1 L# h- v0 e4 Z8 q5 q( a下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:$ M% C( e' ]8 A
7 ^7 T; o# w9 p, d7 P: j' w
' Q, J8 D$ e# Q( N+ b7 l' _9 } 3. 注册 PHP 到 FastCGI
* Y0 B G, u9 z5 r8 v' A# M
" I6 j; ]' w0 G0 z打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。/ w2 c# I( O3 U# a+ ?2 P" b
; This is the configuration file for the FastCGI handler for IIS 6.0.
% G0 m0 L1 n2 k( \; The FastCGI handler will look for this file in the same directory as
8 f+ l: A$ z; |# P+ W2 T8 c! m; fcgiext.dll. By default, the FastCGI installer will place this file into! {0 U, M) N: c3 \2 E
; the %windir%\system32\inetsrv directory.
* _+ R1 i! t- s% ~9 `, X: s7 [. P# M( F: q2 p0 E
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
& S% g: p1 X5 Y% T: h. s' x _5 k' j/ M! n
在 [Types] 下添加以下配置:
2 M- J' q1 ]* k! D[Types], y. Y: H, L% Z6 M. X7 ~3 Q
7 e& j7 U+ [9 ]4 W7 S% b9 a Uphp=PHP3 q& _) r( ~/ E6 ~! L7 J
[PHP]
% U: K+ ]/ H2 Y5 JExePath=X:\Server_Core\PHP\php-cgi.exe
0 @' S8 a6 ]6 ~ d这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
( ^2 V) h' U* y/ c P- ?; @# B: c' h3 U* ?0 e
4. 配置 php.ini
/ d( U$ m, `3 v4 q, z将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
( a9 _' L) `: m& j- b找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
# l8 g/ k, \ U2 U4 D2 F8 b! C3 s[Date]
/ M: ^6 g" ^3 I" Q- n# Z; Defines the default timezone used by the date functions
- G3 N$ L( {4 g; D t* n/ U6 I; http://php.net/date.timezone
; X/ m% S, q' U- {7 A6 g5 j9 L; date.timezone =, X: _! ~7 _8 M) N# n
更改为并去除前面的“;”: 4 R0 ~8 U5 l2 [+ z0 p. Y
[Date]
& A/ w' q$ L6 @$ U- Y; Defines the default timezone used by the date functions! s, v" w: ^1 b8 D& x
; http://php.net/date.timezone' r% N; {& `; v, ?* l3 _1 R
date.timezone = Asia/Shanghai/ }8 T/ s+ f6 @" K9 l
如果不改以上的date.timezone可能打开网页会提示500错误
' ^1 d) l5 Y' i: ]找到' i, P7 N2 y* w( v
; On windows:( P4 ~" a' c- c
; extension_dir = "ext"
- C/ ^: A. T G5 ~& W% I$ X3 k5 m改为
: B9 r# F t6 W {; On windows:) C6 F) v$ \4 X! \1 X( K/ [
extension_dir = "X:\Server_Core\PHP\ext"
- | f* C8 c+ ]9 P
2 n' j* s) S' _8 @( h找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1 ; L8 r' Q; r6 m7 y8 `0 o
如下图:
/ Q5 _7 G: p/ U4 i+ Y& w+ O# F( U
" }7 g1 Q$ Y$ @ j( h3 b; r3 U6 n/ J
找到:short_open_tag= Off;改为1 O+ g' \; a. i8 Q
short_open_tag= On6 B/ L8 c7 x% Z: i4 p
! X6 J9 }; H8 J B+ e+ m# z/ v) \/ }5 ^
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
6 V- E& r$ m6 z9 a;extension=php_bz2.dll) v; T7 r, l( @
;extension=php_curl.dll
! v9 S/ \/ u/ w* W: J- i# \! o;extension=php_dba.dll6 h8 [" H. [ X& s0 E
extension=php_mbstring.dll
' H6 | m5 a$ {+ _: z, P4 Bextension=php_exif.dll% N( k. t- S4 \6 J) a
;extension=php_fileinfo.dll
7 G" R- P, m' a, R" Jextension=php_gd2.dll
+ `' ~: ?) y$ N+ e+ |;extension=php_gettext.dll$ W# L8 O. s7 y5 N& ]. p
;extension=php_gmp.dll( f: m5 ?6 s* u0 n" G" Z
;extension=php_intl.dll4 g/ z% C1 ], F& ?$ h' H4 Z @# ~
;extension=php_imap.dll5 W5 Y3 L8 m. }3 C
;extension=php_interbase.dll! V# s; W0 |" N5 c$ D! H
extension=php_ldap.dll
$ M# V3 e2 @* k2 s6 q+ V3 q;extension=php_ming.dll R; S5 H/ B% x2 s9 \1 b. x
;extension=php_mssql.dll
+ {6 P Y5 u) K% @/ u5 y* z Aextension=php_mysql.dll
8 b3 K) |1 r7 y+ O1 y' j- mextension=php_mysqli.dll+ L, o$ v$ A# T) ^
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client: a' Q6 d& I5 {2 \, H4 e2 k
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client9 _# l7 o' p. {9 N) M \
;extension=php_openssl.dll
. h9 P. | P& U/ r3 t$ L! |! C; [;extension=php_pdo_firebird.dll
2 q1 F; D% L; @- ~. g/ o;extension=php_pdo_mssql.dll" q/ Z* L8 T# B6 ?8 Y: G! |
;extension=php_pdo_mysql.dll
7 a' F8 [4 `6 w. N& i8 n;extension=php_pdo_oci.dll$ x+ I- P+ p% b5 x, g$ V- I& U
;extension=php_pdo_odbc.dll
- r- k7 f) Y/ Q! c+ E;extension=php_pdo_pgsql.dll3 p: ?/ |; S X5 E3 J3 D
;extension=php_pdo_sqlite.dll
" j+ D' E+ r4 Y% L0 _, Z. h;extension=php_pgsql.dll$ ? P' t; f: z- H7 n% R
;extension=php_phar.dll1 j2 N5 k3 s* r, ~
;extension=php_pspell.dll
) Q* @' g+ t5 S' l;extension=php_shmop.dll2 m: v7 I" d' I+ a. |, A# ]
;extension=php_snmp.dll
( y" n% }2 |& [2 Y$ d- R% g( \;extension=php_soap.dll7 `4 g1 r+ a4 u# p0 B0 U& c
;extension=php_sockets.dll
- v7 ^' q5 A1 A* B/ t& V- j6 w;extension=php_sqlite.dll! H4 m( J: k; P$ Z+ [
;extension=php_sqlite3.dll
# i2 g; }8 k. g/ I;extension=php_sybase_ct.dll
" q# I# F$ G4 t1 i;extension=php_tidy.dll
% y# }, ?" y1 U2 F$ k6 n;extension=php_xmlrpc.dll: G$ M6 F1 R1 S. T0 @) F# i
;extension=php_xsl.dll
& q% f. ]" y. J5 \) Z# P, D;extension=php_zip.dll/ b" ]/ k; |- ?# N5 ?* j6 e4 T0 Y
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行) z. V( ^) b; z u+ [
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!3 c! W% \' C6 n f2 Y0 C, s' b& C" z
( A; Q; j/ J8 h" G- z
. L! ?4 y4 _% X/ C: H; n0 d
5. 配置网站 , j/ \7 ?$ u X- Z' a# x& ~/ H
0 a. J. r% h3 F# I
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
4 }, K3 N) i4 X. v+ A. d' T
0 N$ V$ h8 i. b, S+ j7 i6 |
; M+ C' {& M* e' k7 F
. U( E$ X! |5 a8 R" {# J% q
, @$ L1 `2 L+ P( r( b可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
) j6 S1 q( e& X
9 ?7 E( h1 T( _9 P; ~6. 写个 php 测试下吧 2 B& o# W+ q6 \+ D
" m; S, v- t+ Z修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
, @1 l8 C& _4 e% e
1 Z* ~0 t0 S+ ?0 k- o6 d8 ~+ Y
. I5 W# |$ h. N0 z6 C$ `7 N0 c K4 r) l% R6 e9 A! @' P4 J
测试是否安装成功!
# m3 X( [4 y i" J% N8 ]1 F建立一个网站,phpinfo.php文件内容为:
3 y, W: N" I9 O. s8 Y2 @ A6 w文件:phpinfo.php
( n% R5 k) D7 L+ T* J7 F* e1 Z<?php4 Z' [% S. \2 N4 O" t3 _$ H' U
phpinfo();
: t* U/ q7 i0 ]0 o/ y?> 8 Y( V# j6 A% O8 C$ ]; W! N/ m% Y% t
% R" x- @# {+ W9 s8 e/ A/ O
看到类似以下效果说明你的服务器可以跑 php 了。
- s) c4 A% [7 ?
2 r3 o6 F% \$ a, f5 q安装过程出现小插曲,如果运行测试文件出现如下提示: w8 f7 F% f4 Q; a4 t/ @4 B/ o
先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:9 c! m3 K* J/ U
错误1,
4 u0 U5 J: x! S4 R+ q; P6 r' j* o/ hfastcgi error
2 ]+ _3 Z) b( I/ {the fastcgi handler was unable to process the request. ( F) o; q( @- B) }2 n4 l# @6 V/ J
--------------------------------------------------------------------------------
# V! \- X% b! o2 R" ` @) p. Ierror details:
# f, G8 q' L8 K2 V0 serror number: 5 (0x80070005).
; ?4 I5 Q h+ u( ]) [error description: 拒绝访问。
9 q% W3 j/ V9 u( P8 |& g+ x$ Y& thttp error 500 - server error.( w" O! g/ T, y0 z" H1 q1 E
internet information services (iis)
& ?$ A0 n* N9 B' C" b- v& [" K这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
0 V+ S1 u8 H1 j8 M* Z, ^. W. Y/ T' G) B5 w3 S
错误2," C* A9 O1 R7 ]$ ? {1 P, S
FastCGI Error. g! @2 l" ^9 `2 c/ f ^2 A; b
The FastCGI Handler was unable to process the request.
* _6 r6 c! h; M5 B--------------------------------------------------------------------------------+ Z1 ]& [! \/ U7 J" n
Error Details:8 i" O: I: U/ j/ q/ R- m: g
Could not find entry for "php" on site 1960240566 in [Types] section. 6 J8 G+ T2 t' y. A
Error Number: 1413 (0x80070585).
- m& _' \! D) r- k. {4 xError Description: ?TD§?÷òy?£
, ~6 B! o9 H0 {/ jHTTP Error 500 - Server Error.
! _, R0 H( b n1 C" h7 xInternet Information Services (IIS) + @3 b& G: k( Z) g. |2 O+ I) y
0 _* |9 l: t% [7 p, R" ]% Q. l即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
9 h1 ?* o0 e% J" g4 E: A错误3,
) j) q( F( ~& i4 l----------
; ?1 _9 o" x9 C- D6 ?( t. h9 V; VFastCGI Error , u- P0 ~ t5 Z# E7 l
The FastCGI Handler was unable to process the request.
2 i; ~$ M' f9 ^* jError Details:
8 p0 w3 Z; q7 f2 E2 H# H( `- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
# [6 ]% ^( p: c4 _4 B& T' DInternet Information Services (IIS)* l$ |% U! ?* ?* N; C I
--------
8 B2 o# p! }6 X& \+ T$ P/ t我的PHP目录在C盘 / \( X8 n* {% I0 G9 G3 H, C: z
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...% b) ]& @7 }6 E
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
: D& T0 `9 G4 N" r0 Y把 C:\php\php.ini 删除,搞定!
1 d% b) m5 s% U8 j X* o随后用FakeCGI调试工具才搞定原因..
5 G1 W& s. x1 B! l3 E) w感谢FakeCGI,痛斥我的坏习惯!!!
( K& S2 P. \% l' l& C' e8 f1 [( J2 t! J: k- [8 V& N0 y
& @, s/ i! j! Z% q. H
& H. [7 V1 o# N* E1 n2 S
# Z$ c8 p; H" x, T% w
+ u( g4 ^' y+ U, M7 Z1 b
PHP5.3.0特除配置# Y% P+ d! R3 S2 H, g
一,如何正确调整上传附件大小限制?
( Z. v) B. Q4 z7 z* W& o, M修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:' k6 b1 F: B- y% u+ X/ P9 {6 G
1. post_max_size =10M
$ a6 o) q, p( q x; i$ s9 X表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的., i- n; ^- f% v# y7 ^; \. l* A6 ?
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...) X" a# O* q7 n3 h
2.file_uploads = On
- p& s+ s$ [3 \$ [; Z* C. D6 D是否允许上传文件,如果为OFF您将不能上传文件.
; O6 T: J: n3 P8 X* s3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\" / ?/ K( F: X4 E4 I0 }: E
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
* K. ]9 d$ M2 h5 |, l" }$ ]6 m4.upload_max_filesize =2M
9 ]2 X: h8 {( V最大上传文件大小,此项针对上传文件时单个文件的大小.) W; h# P4 F: }( Y, @
与post_max_size之间的关系:
Z' `& J4 n) s在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个." N, Y2 Q3 ]! P
修改之后一定要重启 Web 服务。
( A% V8 Q _- t5 s1 g ~2 J" M K1 u注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.$ S. \9 Q6 j( C" a; u9 B
二,EXIF信息服务器配置说明:' ^% }7 E" k, G: w# j1 Z
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号% I: E. J7 x& p" g# I6 M
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前1 ]) e5 P, P+ B3 _& m2 Q! Z+ d! a
3.找到[exif]段,把下面语句的分号去掉。6 T" M: z. Z2 p$ \7 p9 u8 P( Q& w9 C
;exif.encode_unicode = ISO-8859-15
" {% V9 X' l% E' x' s, A6 Z;exif.decode_unicode_motorola = UCS-2BE
$ m7 V* g" D5 l;exif.decode_unicode_intel = UCS-2LE7 x4 y/ m& C4 u# |
;exif.encode_jis = 7 t6 w% L$ X1 I$ j
;exif.decode_jis_motorola = JIS
! t7 v& e; z- U;exif.decode_jis_intel = JIS, T8 b+ h. R, h
PS:
9 }$ T3 U1 x) {- f安装版PHP的方法: / \+ S6 M3 }5 E: s5 j
点击NEXT
+ o; h9 e0 Z3 a" ] 9 W: ]6 r/ p3 j6 X5 r" y% `6 p1 B
打上勾同意
: o; j$ a' A5 U1 F, g/ h! j
/ ` L: q) j l+ @5 C出现安装路径,默认路径,点击"Next"8 O* V$ Y( i1 J9 c
$ d8 c" n2 @' f! H e: x
在这里选择:IIS FastCGI,再点击Next
" O; m# K4 W" g1 @9 c7 m $ Y. T" D; X4 O' R* f! ~5 y
然后在模块里选上( @& Z- O: x" _% G1 o# G, X
mysql: v1 {* [7 ]* w" A$ ?
GD2
2 L" s# c0 O5 p* X9 ]Multibyte String) H+ p4 f, r% @; k" A
mcrypt
& ? l: Q. c J, _2 ?之后点击"Next",安装成功!
9 Q1 z- t; O+ G6 E# _5 x2 G3 V$ Q8 O7 `" l* U( E
1 {' S5 s: d) B8 l$ N. d. M$ C! `+ E5 x6 Y
待续: |
|