- 注册时间
- 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的完整方法/ o6 [" h2 b [
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP# T0 D5 X* ^. u4 g4 z
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
9 t/ J: Q5 [7 @/ l4 D; @5 l0 K微软已经和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安装方法我记录下来,其中包括出现的错误.) j& q) O- C2 [
1.下载 FastCGI For IIS6
2 u) t& |0 }+ u2 r; \0 u; @fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86); L5 v9 W) u5 N! u5 W: R9 k( O9 F
下载:http://www.iis.net/extensions/FastCGI,选择: x862 _6 I9 w* P! ?$ _* K. A
$ D3 T" ?5 }& u! L 
- [" w$ z- @1 k( n' }% `6 G
, u% Y5 n' B9 V3 W! |' G' } k5 X或者直接下载:http://go.microsoft.com/?linkid=9655696
) ?* o! f) j1 L0 J/ d( {& Y! t6 U
% b5 K0 k0 ]6 {- `9 w下载之后,双击运行进行安装。 x# @: l$ _3 g3 A% `
(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )
* E: s, Y* `* i3 `1 _5 t1 E6 m* P! ~' G
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:
8 t% v+ `6 K9 g0 n9 ?
+ e" v0 D @% L6 ` s( m
$ E+ Q3 s8 r5 }" C0 n) Z- e' j' b4 C% M
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。4 K/ e8 f3 N& l! G' E
' e- t: N5 d; d& C9 v
* `' r& Y& w" D* Z% L5 U
# \' L- f* S2 c$ ^! m1 f9 j' x
2.下载 PHP5.3.0 Windows 版
- _! o4 i- _. K# }6 T由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!' c4 y6 P: G- `, z
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,, e* }2 g0 ^- T- M1 n
选择:PHP 5.3 (5.3.0)
/ G3 A6 R( S8 j1 q+ N X+ D, @( Y+ FVC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]5 Y8 }' T; V. K8 o) U2 n' `
sha1: f049c806744855e4420844d47e051949fcf066610 K; G( v) D2 {9 q
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:
9 h J0 f1 \# v2 o9 m. P ' P0 D) w( ]& P8 y2 d! D
" ]5 N& e' i- O" D
3. 注册 PHP 到 FastCGI
' D8 J( m" ?9 S5 W4 q$ e
8 Q0 O0 \. u( \" y" l打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
0 Q% Y# Z8 o, ]4 Q1 p. N& I: i; This is the configuration file for the FastCGI handler for IIS 6.0.
! q2 \) L8 t! y' v% D; The FastCGI handler will look for this file in the same directory as1 `: [( n5 y0 K% _6 H
; fcgiext.dll. By default, the FastCGI installer will place this file into
4 X+ _: U! P0 T; l0 p+ r9 r+ y, K. `; the %windir%\system32\inetsrv directory. # ~# d5 A) p. _( K: n
- z1 V8 l' ` W; `' U, F3 R6 m8 u我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
, Y5 F: w+ v8 J* ?- }+ C) f& P. C7 n0 r1 u; }* N
在 [Types] 下添加以下配置: 3 K9 b7 f, q* w }. n" @
[Types], w* D# r: x" Y, g& l2 g M8 g- c6 [
( f9 p, q2 q2 v6 ]. [2 C7 Q/ |9 kphp=PHP3 A/ ^ j" \9 p9 h+ f7 e3 h% ]% P( o
[PHP]5 J% R# R! k0 `. A/ w
ExePath=X:\Server_Core\PHP\php-cgi.exe4 ]: K3 |1 Q! z8 Y% t0 M1 J3 L
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)& E1 Q. Q8 z! {, \* G8 H
/ v2 z7 ^! f8 Q, E$ i4 }
4. 配置 php.ini
9 ^ a" E$ c+ L: |# q将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
9 y2 h/ @& Z0 o' w; G% O4 [找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
: |; p$ Q3 ?4 t2 I$ k[Date]7 ]$ t) o g7 c( V8 ~9 S* p$ g
; Defines the default timezone used by the date functions' G4 Q0 l6 T" r
; http://php.net/date.timezone
, L! o7 E5 }, Q, N; date.timezone = s7 Q: \% A. n7 I3 U" T$ i' R( Y8 m
更改为并去除前面的“;”: + d- P. l3 K9 h6 E5 G
[Date] A3 V1 O6 |, P7 I% k
; Defines the default timezone used by the date functions2 } C c3 V0 F x. r) a$ }' _! j/ g
; http://php.net/date.timezone
t; @5 G7 n# R+ h7 U5 _* o- Rdate.timezone = Asia/Shanghai% B0 E1 h0 B8 P4 i
如果不改以上的date.timezone可能打开网页会提示500错误
% D5 c( g- u/ \% E找到
A1 m, t0 G: ~7 I+ H; On windows:
0 z3 p l4 ], ~5 s0 j; extension_dir = "ext"
1 c! G7 B4 F, ]) A4 z* v改为+ v5 P2 j% U, h
; On windows:$ v! @' ?: J! }! k9 ?, j4 W0 F1 d- v
extension_dir = "X:\Server_Core\PHP\ext" 6 Q7 \' g( p+ G. m
7 d0 _* q( B( t
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1 8 I+ M& t3 E7 K6 }1 F$ B
如下图:; r8 u" S) Y5 V7 J* o" \
" a* U- [3 ^8 }# ]6 R- b4 @0 w F
: B3 v6 d) q# r, V找到:short_open_tag= Off;改为
3 A) R T+ k# W0 v6 ~ short_open_tag= On* I, e" J+ C% p/ Y* n# G
' ~7 m0 Z1 T! l8 e, B5 U
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
- V/ j6 `+ z6 E& Y7 K5 x1 m;extension=php_bz2.dll/ h$ ^' ~; H+ _2 k
;extension=php_curl.dll
! T) G. p4 P! v) m8 Q: L;extension=php_dba.dll
- Z1 w; b. U/ i7 B4 G- a- r# Yextension=php_mbstring.dll+ ?( f6 J6 e! o0 }2 F% q" ]" Z. a' B
extension=php_exif.dll; A2 p) x$ v8 A6 q# e. e: r9 Y2 Y
;extension=php_fileinfo.dll$ y- ]1 I* D, \) [4 Q
extension=php_gd2.dll3 ]: \% I& m' {+ Q0 Y( e5 z* F! h* ]
;extension=php_gettext.dll+ {3 [: K; \/ e
;extension=php_gmp.dll
$ P& f( k. I: n6 }! M* r5 h8 Q% U2 y;extension=php_intl.dll
' {5 {5 @, P) k. \;extension=php_imap.dll3 X5 i f# ]7 E3 {; a" o
;extension=php_interbase.dll
1 z% W4 e) p5 {2 _- eextension=php_ldap.dll# t: _* s/ s( A$ ^/ n, V
;extension=php_ming.dll6 p" |* s2 [; i2 }/ r1 S6 l0 V
;extension=php_mssql.dll
0 o) Q! w7 @0 W G' _7 |3 vextension=php_mysql.dll
' M6 q" c! E- E5 G$ b8 |7 y! Wextension=php_mysqli.dll' X0 g1 y9 j7 ]& c4 j
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
- b2 T) y! Q! P1 l' i;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
# \. W! s7 v) h) Y! H" j1 I T& A;extension=php_openssl.dll
$ M8 M. t+ `* L;extension=php_pdo_firebird.dll$ s& d$ c* w9 t, r* h7 {
;extension=php_pdo_mssql.dll
: S, l( ]. h8 K;extension=php_pdo_mysql.dll
7 R9 G& o9 k7 L# K0 J, ?" w9 ]1 a;extension=php_pdo_oci.dll0 ?+ Q J- B; c& h1 ^
;extension=php_pdo_odbc.dll# p$ d0 ~" B. b
;extension=php_pdo_pgsql.dll
: s; f) C: f) O;extension=php_pdo_sqlite.dll
8 H8 d) m0 ` ?# W, r;extension=php_pgsql.dll2 E9 S' F% N$ w" {) f4 ]" }6 O
;extension=php_phar.dll
6 u" g1 k" u; N3 ^$ t& q" V;extension=php_pspell.dll( n4 W ?5 Y+ j
;extension=php_shmop.dll% e* j0 n$ K& o( G7 I+ q$ l% I1 s, p
;extension=php_snmp.dll
/ ~" f- s% Z% ^( a% `;extension=php_soap.dll
8 g( w$ j' o+ _7 L- @;extension=php_sockets.dll% ~) h. U' e h
;extension=php_sqlite.dll- W0 F2 o1 g$ b
;extension=php_sqlite3.dll
8 j: d3 F, e- e# b7 ?0 w$ [9 q;extension=php_sybase_ct.dll
0 Z8 d- Q' Y9 j& I;extension=php_tidy.dll& D8 E1 x9 K! I* |
;extension=php_xmlrpc.dll
% r3 W' C3 e9 z( k* l;extension=php_xsl.dll7 M* \7 r. A% p6 U# u( p0 {
;extension=php_zip.dll% q: g; O' _, w: m. `& U+ e$ e g
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
7 W- _# Y3 [; S/ F$ J! X保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!
, w% `# b" k* T$ ^+ |
) f' K* L9 Y1 K) Y9 [. n9 G
# Z1 d& W/ S, H0 H9 f$ D; ^5. 配置网站
9 |0 d, Q* ?8 ?! n" s* i2 u6 r6 d R2 _8 b' o
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图7 \& f/ c$ y, a" l2 s2 g
' a/ Y3 J9 Q: Q; n/ Z* b6 w7 ?$ U$ z6 g+ h0 z
* `- T" S3 E' n$ B! V+ u% X
7 o1 C0 j7 x3 X( L
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
9 E, N# m% Y5 p+ g0 I9 e _# N& d( _0 A1 W& ]* f; K
6. 写个 php 测试下吧
$ K9 Y8 `1 A" j: C1 o2 t
& E W8 ]' }( M+ p2 K# t修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!( @ [$ | R7 P( T1 q: X
% j. i% u7 _4 i: x# R$ r: @8 Y+ n5 u; M6 c7 o( J, w2 p0 i
/ O2 Y7 @) ~# N5 n3 W e! M测试是否安装成功!
+ t* M: ^! b0 i) g建立一个网站,phpinfo.php文件内容为:4 ~" R- q" E( f. j! c. L- r
文件:phpinfo.php+ U: c# A3 D! } b
<?php
* z" U# v6 M3 T8 h2 ?3 K8 `" xphpinfo();) C9 N2 R/ S. `' i; h8 C. z
?> , V$ |6 H0 y: p( E0 U: J
9 p3 K0 @/ o' c' F看到类似以下效果说明你的服务器可以跑 php 了。
) B* F4 C6 [6 U2 T% j: t# b! p
+ M5 c+ P r' P3 m% U: |8 e5 u安装过程出现小插曲,如果运行测试文件出现如下提示:. }- m" q. K" n. | U
先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:3 P5 T% l3 z8 t) k% s& R
错误1, Q8 p0 {1 p4 L7 ^1 q; X9 D$ L7 A
fastcgi error2 U+ L) L$ S+ }
the fastcgi handler was unable to process the request.
1 ]/ Y: O; v9 i8 V--------------------------------------------------------------------------------9 T8 D; {* p h& ]2 s; c; E7 e
error details:
$ x. d) I ~ L. g7 b% `+ [6 _error number: 5 (0x80070005).
4 Q7 B2 K7 c7 Q& z& lerror description: 拒绝访问。
8 J& J1 i, ~0 I* Z0 Y5 r1 Ihttp error 500 - server error. s, N& A/ \5 Z E: L
internet information services (iis)
_0 _- l: s1 f+ K6 w9 l这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.% N+ E! m. J0 [7 e7 H8 n% V
* l. W; M7 N; {3 s错误2,
3 ?2 J- ?* X. `( ^7 y. n) QFastCGI Error
% e2 M; ^% f' {: M B: S+ OThe FastCGI Handler was unable to process the request. ' b; u% L a: P8 e8 q7 E
--------------------------------------------------------------------------------
% [/ |9 t6 a( _ hError Details:
- Y) Q+ G6 m2 r; D5 vCould not find entry for "php" on site 1960240566 in [Types] section.
$ e" o Q% x" W7 G4 I# nError Number: 1413 (0x80070585).
4 c" C- ]- u8 a4 QError Description: ?TD§?÷òy?£
5 S( Y/ |0 ?+ |2 _6 i/ V: tHTTP Error 500 - Server Error.
# w* Z0 v' b$ t- _( E5 ~# [Internet Information Services (IIS)
, C& B6 W! W* W. Q! A1 X$ l; H$ I) m$ \
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!" a/ d: E1 ~+ ?
错误3,
, Z9 F$ m# H: ?; m3 G |----------' V. M; }5 k k7 [2 v3 U8 i" Z
FastCGI Error : n+ e( M0 P3 [' S( m. w$ t; g. U* u" l
The FastCGI Handler was unable to process the request. . N& l- R$ ]* p1 J, {
Error Details:% b$ _! X7 N8 I$ S. `( c3 D& L& u5 S2 O
- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
5 u! p8 [3 e! C$ ^# {4 ]/ M# P' `Internet Information Services (IIS)
8 A4 H. Z: F9 u- A( n--------
+ ^- @, V! ~ L" Z0 G5 e" I9 t我的PHP目录在C盘
8 I5 e" X) k0 b" j/ Z" D# f$ o' @ _0 v当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
1 U3 O$ _# Z( R @: |3 D2 K结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
, w1 E! @9 }5 n7 X: s3 q把 C:\php\php.ini 删除,搞定!
5 p: n: |- P# Z2 u; s随后用FakeCGI调试工具才搞定原因..
8 u/ G7 J6 e6 a ^! Y# V# ]0 _感谢FakeCGI,痛斥我的坏习惯!!!
6 Q% }, E1 A' i X9 G
3 o( O; S& s9 L, o2 Z# T( F0 |7 z' ^: j* f" o: d
+ A) }3 A; ~" V" z; s" g' j* E& Q4 f
' Z% c+ T2 W( T
5 p$ d* _2 U% W/ G. d/ a: e4 k [1 ^
PHP5.3.0特除配置
; u8 O, F, r; v" B4 U& f一,如何正确调整上传附件大小限制?
) ]/ ]4 G9 h# y- M W* ^7 I+ _9 }修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:% j3 T' i' f0 z+ l" T6 S
1. post_max_size =10M 3 w- E5 u1 m( }8 W1 B% K
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的., d1 E3 I, {' [4 Q
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...& S1 ?1 n5 ?8 _4 g3 q
2.file_uploads = On , Y; _7 E, F/ F# I
是否允许上传文件,如果为OFF您将不能上传文件.
0 K2 z% N: t; |3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\" 1 \1 l, ~0 n# e. ]+ y* {
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
/ B& B& T& E+ n, J4.upload_max_filesize =2M 5 C, M, J& } X3 v4 [0 R' l
最大上传文件大小,此项针对上传文件时单个文件的大小.; y% u) J1 Z, G6 a t ]* P* L! {' I' d
与post_max_size之间的关系:6 V' {6 M5 w( @! Y, _' F
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.0 N. k9 \; r/ j3 w# ?7 o b7 s
修改之后一定要重启 Web 服务。" ? B) Y d) T. k. d
注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.* K5 g4 C% I4 r- i
二,EXIF信息服务器配置说明:
" N2 x; M* }/ D& P1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号, J( u, k+ C/ p
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前
& z; a" n( `( R4 Q! P3.找到[exif]段,把下面语句的分号去掉。( a/ C% b" H; C. x
;exif.encode_unicode = ISO-8859-15* i* J( t- J3 y* g* v$ A8 `
;exif.decode_unicode_motorola = UCS-2BE
# s2 Q# A* j5 I' ?4 a, ?+ N3 x0 E;exif.decode_unicode_intel = UCS-2LE; S9 g) S' A7 V D6 J$ ^
;exif.encode_jis =
* }3 y5 o' ]; y, J4 i;exif.decode_jis_motorola = JIS
6 c$ E( K$ l- e. A, c! K9 w; b;exif.decode_jis_intel = JIS
" x: g: _7 H Q$ RPS:! k, g |! Q% }3 m* w
安装版PHP的方法: ( X& l+ Z/ x, Q5 j# D/ m) G
点击NEXT
, Z+ \6 }; q& q" z1 ]
2 g* S5 t2 I: h3 K打上勾同意* t8 b8 _* h0 K) `% [

4 c6 h- J M# ~' B8 G& E+ R出现安装路径,默认路径,点击"Next"
9 M" w; O: f$ x
) U, g3 ]8 G7 Y. E* @4 v在这里选择:IIS FastCGI,再点击Next
/ M8 P9 |# o% Z. a0 T, b
' g( h+ M! ^% \: u4 i2 P+ N然后在模块里选上+ j2 p8 P( n' d. ?4 A, o
mysql
: H! H. o, b( Z6 z# m/ O2 oGD2
P' U; `# Q2 V2 |. jMultibyte String; z5 x0 n3 w: w' F* }' \
mcrypt
) T/ c1 n9 f7 R+ a- d; i D% P# G之后点击"Next",安装成功!
6 W* o8 l' ~; A3 m* e5 V! J
& ^4 _/ j! U! O+ g+ I) m! q/ Z, d2 [
3 `# I3 |+ E3 h5 Q
待续: |
|