- 注册时间
- 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 Z8 x: v0 j* ]) V) M7 }( e
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP6 _ m3 b3 Q8 i/ M+ Q
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
: {0 ~+ [4 A- R2 f, C! x微软已经和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安装方法我记录下来,其中包括出现的错误.! D; |* Z* P. D* W4 j/ i
1.下载 FastCGI For IIS6 ) t3 |( M3 O! O1 F2 Z: y3 d
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
( r: Y1 c5 t% Y& H, |' j下载:http://www.iis.net/extensions/FastCGI,选择: x86
2 Z' G2 h& m. E9 q; b; `8 U
8 X. E/ G7 k$ i* l' P5 z+ w 
7 A( O/ ^. O" J, Y O3 [) ?' F* ~* d, a3 N. E
或者直接下载:http://go.microsoft.com/?linkid=9655696$ r4 n# X$ b. U2 k+ }9 n
7 ?- u0 j2 K, s+ X5 T下载之后,双击运行进行安装。
1 ^7 a2 \# @9 h(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx ). R" z# C6 {8 [
" D; h. H4 V4 C2 f% D6 i, X安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:' w& I7 r/ P' r g `+ b
! t: ^; @+ a% @' b
3 M* o+ p0 u* j6 |* K( y
" M5 @ k# K' _7 j6 v& H
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。) b9 n+ r: k( a7 O: F
! e. {, O( k' i4 B. a

. h8 |' Z& H; j
- {, Q2 Z9 A2 U& Y2.下载 PHP5.3.0 Windows 版6 p. |1 D/ |0 n5 I+ a; _9 w
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!; Y; U) [: k" ?% M9 {, o, N$ Y9 g
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
6 _( y5 e" z4 D- g1 a R选择:PHP 5.3 (5.3.0)5 C* j! H+ q0 u2 w0 a0 f- k
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
( Z5 t5 ]7 X2 c, Xsha1: f049c806744855e4420844d47e051949fcf066618 }; q- i, M3 F& x* D
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:/ _, l. n* }- q' m' ^
; @- \% d* ~ g6 q/ Y' W& ?/ l/ C6 S
- h5 S: p1 {. G. Y T3 T2 y 3. 注册 PHP 到 FastCGI
5 M3 Q4 Y( o! O$ U) M$ u
9 B- A4 V9 y* o/ O打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。' p r+ g& l) l0 {3 q
; This is the configuration file for the FastCGI handler for IIS 6.0.8 `% O( I% X0 S' u. i a
; The FastCGI handler will look for this file in the same directory as, A; ?5 f; o- i( P
; fcgiext.dll. By default, the FastCGI installer will place this file into
5 Q0 _, [. V$ b; the %windir%\system32\inetsrv directory. 6 r; Z8 X2 _' i9 A
# B4 n+ J# @, L% D8 M9 B: [* W; f
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。 $ H% `0 G. C6 i: ] j/ w
% ]- v; m# g+ |8 ?! p在 [Types] 下添加以下配置: 1 W% z0 k5 p; i! O8 j4 J4 `- ]
[Types]
# j* y8 F9 g0 E5 f; y% z. z' Q
6 q Y6 T2 }$ a; O) q# g( ]8 uphp=PHP+ `4 ~( u+ h. I6 e) z4 |
[PHP]
# P5 ^: z a1 U, ` g8 @1 kExePath=X:\Server_Core\PHP\php-cgi.exe( k; T; W2 v, I; v' }- K4 [' y
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)( U! m$ \ x1 ^7 I5 t0 ?, c
# y. {7 I7 k) t2 B4. 配置 php.ini
& q7 U2 Y$ [2 e8 G! d/ ~将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini 5 N! Z8 }4 \& s- B3 [
找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面+ Z* N6 N, r$ t+ }8 I8 i
[Date]
+ \* \& _* v8 v. ]7 Q; Defines the default timezone used by the date functions
* O0 Y; w- h+ F& v- Z5 H( |; http://php.net/date.timezone, n3 W8 d+ X' d* P5 ]# {) `3 x
; date.timezone =, T& P3 N4 U: z, y6 p6 i" P
更改为并去除前面的“;”: 3 M2 M: e/ j$ ~& {/ D1 _% G/ H
[Date]0 N. R l4 q4 g" q; D( L2 a' t. B
; Defines the default timezone used by the date functions% x# D$ X, S) Z9 V. Z
; http://php.net/date.timezone
0 _/ Y$ y5 A- {" E% j# Q. Ndate.timezone = Asia/Shanghai" ^" Z) L; x4 `* y2 Z' C3 _4 d) t
如果不改以上的date.timezone可能打开网页会提示500错误% o! S1 x+ P9 k9 C5 |# P
找到2 z; Z9 X2 n' [' w8 V. r. r/ ~
; On windows:$ ~. ?9 v/ U- s7 t
; extension_dir = "ext"
4 b1 M2 n4 b3 w% Y* k3 G! ]改为! J3 I- a# J$ _4 O
; On windows:3 B& |: N+ J9 H+ J6 L7 H& k6 c* }
extension_dir = "X:\Server_Core\PHP\ext"
7 ~. m8 S( m1 ~; s1 N1 D3 ?' F7 {. f# N- W" N# q
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1 . K" w/ B" q3 \0 I2 u9 |
如下图:
7 e. a& g! J8 r! z: s. t# e
/ H1 M3 F& J `% I/ `
5 o5 Z: N2 o1 Z- Q9 V' M+ O找到:short_open_tag= Off;改为
$ ^7 N' R, e* C" n. I short_open_tag= On+ J. H+ S& a/ a) ]$ b) G
* D8 K0 f2 @' D' @/ f5 \' x
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
+ ]$ t9 y$ y3 V+ \$ R$ B$ g E. Q;extension=php_bz2.dll/ X: f) z- w" A3 J' I
;extension=php_curl.dll) z) c; i, A0 O$ _( A! ~
;extension=php_dba.dll0 y ]* m' I+ X4 ?1 [! F1 ?
extension=php_mbstring.dll7 m, z' O, v7 N2 S) }& Y# p
extension=php_exif.dll8 Z( s1 _9 P# K1 C7 j8 b
;extension=php_fileinfo.dll
6 o! t; \7 b {1 O. ~extension=php_gd2.dll* N& {) s1 u0 b1 I
;extension=php_gettext.dll5 h+ y& r; \. Y, p" a8 n) I& ^
;extension=php_gmp.dll- Q2 Z. L- u; _. G
;extension=php_intl.dll- G9 C+ ~ }, H+ x# J( ]
;extension=php_imap.dll2 B9 L0 O8 y5 |' n& L/ x9 V
;extension=php_interbase.dll
: Q2 ~4 P l; X/ ?* X$ Jextension=php_ldap.dll
% q+ w3 h" U+ A+ }1 S& Z6 s+ Z* ~; K' D;extension=php_ming.dll1 `2 K. {" X5 \: }: G& o6 t
;extension=php_mssql.dll
- Z& G* X- b& `8 h* e; c8 ?extension=php_mysql.dll
, [6 r9 S( p4 }) {8 f% }# xextension=php_mysqli.dll
( K& ]" M: L, s' M1 D" X9 z' R;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client* e: m& `! a& Y+ e, G( E* b
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client: t( o6 x, ~3 f! b. M7 ~9 E
;extension=php_openssl.dll
# G" U& g" t) o m7 B: g3 K;extension=php_pdo_firebird.dll% ?) Q# x6 U; J/ n2 H- i
;extension=php_pdo_mssql.dll g2 k( l9 X5 T( ~$ g& h( F
;extension=php_pdo_mysql.dll
5 G- B$ n1 ]% ~+ R# E& Y;extension=php_pdo_oci.dll" K& e+ ?- q+ I; F6 A2 \0 y# x
;extension=php_pdo_odbc.dll, m. b! c% m! y$ R# G
;extension=php_pdo_pgsql.dll- t$ b& A- l2 t9 p' }
;extension=php_pdo_sqlite.dll
- w! m* Z0 M4 L8 p2 V;extension=php_pgsql.dll
. e# J( d! i+ U& m! A; I. [ \# L;extension=php_phar.dll
" w' S6 f/ e, ?9 x5 [4 K;extension=php_pspell.dll- w# |2 g! e4 M
;extension=php_shmop.dll- V# }6 `3 O5 D
;extension=php_snmp.dll
8 _% i6 Y& U7 X;extension=php_soap.dll
" ?- Z% P) g4 B" N8 F+ W;extension=php_sockets.dll
1 T- q4 ]% A+ E2 _/ W;extension=php_sqlite.dll
, r1 z; N$ \' L;extension=php_sqlite3.dll& l4 [) c4 j7 m
;extension=php_sybase_ct.dll9 C# }! v" y$ N% c& G1 I
;extension=php_tidy.dll
3 a4 W b {+ s9 P- w! A;extension=php_xmlrpc.dll, c+ e) y3 Y7 Z1 e' v
;extension=php_xsl.dll6 \3 L* \1 C$ P! }
;extension=php_zip.dll
* E& E, g b9 P' @( R注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)( X& i5 T: i E4 [* h5 X; V& N# w6 d
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!5 S. K0 r, @8 L: o
5 S* @4 X# q3 C1 _( c/ r. K7 B
0 M0 p0 o& l/ g5. 配置网站
* r Y* v9 D2 V/ l; D. M6 D% v b7 m7 R2 V) t' Y5 I
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
# ^( z- i9 ?& V: Y( \$ Q
& P1 j6 |& ?. ^) R- z m0 ^. q# p g2 |) G4 y

8 }! |+ T( z0 w0 ~) s1 g1 }
& i( |6 R# [+ m+ R可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
% S: U, r2 ~- {! ? k. Y3 Q$ `) V4 C8 i$ I
6. 写个 php 测试下吧
2 `' ^' S& V3 r' G
0 P% w/ I* I3 N修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
2 w6 c. I1 U5 E9 n. U, D* A% @1 d( j( R# M2 F
" `; Q A0 }9 h! [+ Y! m- h9 A
1 a$ U1 T- V4 h( y" k& s! \" X测试是否安装成功!
7 X7 C+ c% a& E0 d! W! v( p$ m建立一个网站,phpinfo.php文件内容为:
3 Y8 t. ^) y& W文件:phpinfo.php
* T ~5 D; @3 u4 P7 { F. \* W<?php
$ Y2 f I/ v0 s: P8 I# Rphpinfo();$ u7 Z9 ]: y$ G/ O1 W( e, V. l- c
?>
1 t, V% O2 h$ L' U9 I) _$ S" ~' h4 q- D5 H R
看到类似以下效果说明你的服务器可以跑 php 了。
6 _: n1 s; ^( H : ?, p* A+ J: B4 p6 ?' W5 L
安装过程出现小插曲,如果运行测试文件出现如下提示:- h8 u. v+ j" c8 Z7 P5 p7 y. e
先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:# K" e6 H v2 q" ~; d) b
错误1,
+ J+ p: ~* H5 B; d4 }/ M4 C6 i. zfastcgi error! ]4 C2 k7 `) s
the fastcgi handler was unable to process the request.
- d3 k, v% B/ K8 B--------------------------------------------------------------------------------
0 p; A. e, c' ~0 l2 P" m3 N* ierror details:
4 m" f5 Y1 ^4 B, @; H& o8 \: ferror number: 5 (0x80070005).
% e5 u1 b5 [# `( f% d! Oerror description: 拒绝访问。 + x+ G7 k1 g5 S0 D" [5 v5 l, Q
http error 500 - server error.. i9 A# F6 P L2 m
internet information services (iis)
+ t. b0 \: m8 ~这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
: H, _5 ]- N+ g P) A
3 d9 V9 h# J- V错误2,% v S ^) c) k Y9 [3 B
FastCGI Error# }# T2 L7 S: i+ g
The FastCGI Handler was unable to process the request.
; J# o6 u" ^4 B+ R/ W+ Y--------------------------------------------------------------------------------+ b# y+ P9 m) g x1 d( F$ h0 w
Error Details:, I2 K& v: Q; |% z ^
Could not find entry for "php" on site 1960240566 in [Types] section.
* X# B0 o" _; u; q! Z& c1 z4 c1 UError Number: 1413 (0x80070585).
Z" b0 \2 |: mError Description: ?TD§?÷òy?£
+ W2 E; @; ]; A6 t9 v9 X2 R: t& FHTTP Error 500 - Server Error.
3 }$ O' \8 _ r% a4 l' a7 ZInternet Information Services (IIS) 0 N. }; Y# w5 O3 @! u
5 v. g: X6 x- L即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
( Y2 k1 E: @$ }# O% S" S" y1 v0 q错误3,' L# E1 Z6 r0 A( u2 i& M8 |; B
----------
5 ^0 [2 ~. J& D }/ [FastCGI Error
; b! f, w6 G3 g1 y+ W4 DThe FastCGI Handler was unable to process the request. W7 I& x! F. L+ I% r
Error Details:
% x. a% ^0 b+ E& c5 C) [- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
( @9 }" I, G" E& v" o5 H$ S& oInternet Information Services (IIS)
4 Z$ I" v% x0 @, W1 r--------9 i. h) S9 r8 l
我的PHP目录在C盘
1 x8 G# ~9 X& G/ S% J: q- V; \4 F当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
1 M4 [6 Q# f$ v结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
' v) z' B: w, {! x7 ^把 C:\php\php.ini 删除,搞定!. d6 z/ B# p, F5 E" L. q- G
随后用FakeCGI调试工具才搞定原因.." t5 ?( R T1 z8 c$ [0 P6 u( h
感谢FakeCGI,痛斥我的坏习惯!!!2 v: H; w6 j! P7 n- o
" V& [& q/ K8 E
' d- V; K2 L: W: y* Y
# I* W, g0 U. U; {9 h# I' P) Z: J6 c# x! G( r# M8 ]& h8 H9 k& ]
7 \9 z; F; H! ?- e6 CPHP5.3.0特除配置5 q9 U6 v [ `' E7 D# `5 \
一,如何正确调整上传附件大小限制?( F3 I# u- O \- [0 Y; ~
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:% N8 n" a# F; \ h9 T& T8 h
1. post_max_size =10M
; v3 f9 m" C6 z表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.1 p3 N8 N% \% @+ I; J r* ~
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...& y/ `+ o0 k* J; }/ f
2.file_uploads = On ! R& R, @4 j3 u% }1 `
是否允许上传文件,如果为OFF您将不能上传文件.+ o3 r& d) X( s8 C8 _, z
3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\" 8 E) w) I7 P4 [* B( ~
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.( F. V1 ]% N; {, Y3 Q, r2 R4 R
4.upload_max_filesize =2M ! A) l! ~. Z: L
最大上传文件大小,此项针对上传文件时单个文件的大小.
# n% K1 O% m% F, I2 A与post_max_size之间的关系:5 M9 x- j( k: i( w/ W
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个./ M3 \: \% i7 {
修改之后一定要重启 Web 服务。" u) E; |. H9 R. V! u6 F
注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的., k+ o% t5 i2 w* y; s2 h
二,EXIF信息服务器配置说明:
, k6 Y0 ?# Y( V! S! p. G% p1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
$ p/ `* Y* N& n( U2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前0 \" l1 l# N* |" z0 i( ^. Q3 W+ c
3.找到[exif]段,把下面语句的分号去掉。2 S* Y% x3 l$ x3 [
;exif.encode_unicode = ISO-8859-15 x$ N, Z* N& s2 ]( O' D- [
;exif.decode_unicode_motorola = UCS-2BE
. i% X5 p. O0 q1 M/ F;exif.decode_unicode_intel = UCS-2LE
. E4 G0 b. i% \;exif.encode_jis = ; ~ _2 `' p) U3 q0 B L$ o
;exif.decode_jis_motorola = JIS7 i$ T' n/ Y3 }( Z
;exif.decode_jis_intel = JIS# P* _: K4 F" o9 R+ @( q% L
PS:* o7 O' D$ F& l
安装版PHP的方法: % n2 z# |7 X+ B- B+ E" t
点击NEXT h1 U6 q/ C I7 |- P
' }! V5 b1 z+ P1 |$ d$ D) d7 j
打上勾同意
; s6 ~' G* Z. c/ ?/ v
: m1 W! ~( f. k3 O; J L出现安装路径,默认路径,点击"Next"
# C- |3 d+ B$ q
* U0 o! X$ N/ B- ^在这里选择:IIS FastCGI,再点击Next4 ~8 x- I( t5 }9 C. T

6 U0 s( r# Y: D A然后在模块里选上
' ^$ ~2 ^9 {! t/ C V$ l! ~mysql
7 g: Q2 M/ p, Q/ |) E6 YGD2
6 R' w; `! t) u+ YMultibyte String8 j2 o- x1 s3 x. \1 @! |/ d
mcrypt/ W- u/ h( |6 K
之后点击"Next",安装成功!
- n7 h( K& R- Y% t( W- d7 U, [) ]
s0 S( P' v9 d2 `
$ o+ K' u! z4 m6 \' m7 T& Y. }6 P+ M: t! ^ O6 @- G3 |
待续: |
|