- 注册时间
- 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的完整方法! K& E) U, k! w! l/ G1 }
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP. |% N" h5 Q3 s, ?
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.01 Z! @2 E: L, o: m$ G. h
微软已经和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 c N7 J N7 a2 z2 c
1.下载 FastCGI For IIS6
5 m1 I; Z, W! Z3 }: I3 ^ I% Gfcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
' n4 ^( [7 l" J9 C- V! w下载:http://www.iis.net/extensions/FastCGI,选择: x862 @- M9 s1 X' U& Y' Z* w
+ o/ X, \) C \: o$ ~' Z) `, E 
& M$ L9 B. w3 p# ?/ h: y
0 u3 t* w2 j" l: {: z或者直接下载:http://go.microsoft.com/?linkid=9655696
8 }$ e3 l) y% u9 p( z # j8 Z1 ^2 @2 B4 K: u
下载之后,双击运行进行安装。+ t4 N- z* V9 E( g! k" L
(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )
' a$ \+ ?' H' g8 I# N; A8 r+ P1 I Y$ z
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:; E1 ^ G9 {/ G0 `; b' ~
8 ]. ]" U# r0 J2 B . Y" x) b' T! H% p" d
" s; B9 u N( |% }& q% i, s
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
( I7 X a! j; W1 H+ W
8 z) K% ?) j- b6 c
3 a% i" A8 Y! A
/ G0 l5 f. X0 |& r* S) ~( b2.下载 PHP5.3.0 Windows 版
6 C. l1 J3 B* J由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!5 w; Z. |4 u7 \" ^4 f& @- Y
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
% Y+ h6 ]# e p5 g0 ]. p选择:PHP 5.3 (5.3.0)
$ i. L# s" u( P# n8 l* ]VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
+ x5 J9 f; x2 J+ Z: M e, |3 o# zsha1: f049c806744855e4420844d47e051949fcf066610 O' ~1 W' _, R R4 I) p
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:0 ^ Y" _" |* z) R' Z

* u$ A g6 I/ p
* P1 A. ^+ a, k6 E 3. 注册 PHP 到 FastCGI
! ]$ }! N9 c3 e. ^5 f4 P# ~6 c7 r# `) J% h2 S# X* _
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
t" U# K7 P- R, a2 J; This is the configuration file for the FastCGI handler for IIS 6.0.
0 Q% S- q" r# d5 S$ @0 |, b, f; The FastCGI handler will look for this file in the same directory as
; T$ Z3 \( q2 X. r/ L; fcgiext.dll. By default, the FastCGI installer will place this file into+ w& \. @6 Q6 N* H( n
; the %windir%\system32\inetsrv directory.
: w) z5 {& @) |
7 w0 P& [8 N# x$ c" L6 s我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。 7 \9 `0 y4 G3 d w/ a6 ]& c1 D
% k' i. w; [8 {( y
在 [Types] 下添加以下配置:
' j b- @' b: m[Types]
& D. Y2 _, L( A4 Z# U6 Z8 C r; f3 }& M9 V; Q1 E. t: U5 D
php=PHP# x3 Q/ O7 O, [* u8 ?" C2 J- ]! n
[PHP]: V6 t9 q3 z8 B7 \1 h
ExePath=X:\Server_Core\PHP\php-cgi.exe
7 P4 M% n, E& f' A( \0 J3 r0 ~这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
$ I8 B) V" P! v' Q/ O* J% w7 K0 Y* O' a; T
4. 配置 php.ini
: B* I, U4 f2 J& s将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
( A4 m3 c: X- Q4 ^2 J" o! i" E& i" S找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面 C7 N6 z0 f7 I1 M( ~
[Date]2 |8 G: s& j- N, J$ N
; Defines the default timezone used by the date functions8 w/ q& ~0 g1 o5 q: B. f
; http://php.net/date.timezone! A/ x0 [6 E; a
; date.timezone =
- R" g4 \0 x! Y" g& t) ^' m8 p _更改为并去除前面的“;”:
" _( \' T. ~# R1 Z2 |4 T[Date]% h% {) S+ M2 s+ h
; Defines the default timezone used by the date functions
, g& ~' \: @9 \: |; http://php.net/date.timezone+ B* U% ~9 @5 h% Q0 L! j
date.timezone = Asia/Shanghai; k. u | s, I( k
如果不改以上的date.timezone可能打开网页会提示500错误
' ^0 g( ~; K3 Y5 [找到
- R7 ^& V' F/ p) d; On windows:& O1 G, G) q+ _' ~. j1 x- c
; extension_dir = "ext"5 T+ W9 E( i. R9 j
改为
8 ?' {6 c) g& |/ c; On windows:
6 ]' M n* \2 Mextension_dir = "X:\Server_Core\PHP\ext"
" K; n: L6 u+ \& l/ W* K2 g% E
S/ N# A. P# w$ P$ N: m5 S" O找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
4 k4 Y4 V* T9 B9 I, n6 ]) g0 j- `: d. @4 |如下图:) H+ b7 ^5 j9 |) r$ w/ u% ~) D

- E! L9 {2 B; S& V+ E0 _; O' @" V; X! u; v K& Y3 B/ j
找到:short_open_tag= Off;改为
5 g, z, ]& S1 N; |# [1 ]/ ` short_open_tag= On. E2 O ?. Z3 f5 M: {) Q0 n
. D; B/ |7 l! L' s. ~# t至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
& `$ U6 R2 O- }9 k- @;extension=php_bz2.dll
U: A& |& d& x;extension=php_curl.dll
+ l" Q8 q" F- [+ o0 ~3 F;extension=php_dba.dll3 s3 O5 h! b4 M# c, s
extension=php_mbstring.dll0 ^: V' b9 P# ^" N) C+ q% N
extension=php_exif.dll: S: P3 {& ^, W
;extension=php_fileinfo.dll: e: x! A/ E2 W
extension=php_gd2.dll
% b t: w# C& J2 i, g( v;extension=php_gettext.dll
7 q% i9 e0 \, o" L/ H, Y;extension=php_gmp.dll
4 k$ K2 t0 d' o) H9 K7 r. m0 @8 f;extension=php_intl.dll
3 Q& ^7 q$ E' K: O4 Q- V( o$ g$ h;extension=php_imap.dll2 C2 ^8 ?% }0 D* I
;extension=php_interbase.dll
- e% Y4 u+ @, K* A6 V Lextension=php_ldap.dll
# c5 x" o1 `9 s7 d- W;extension=php_ming.dll$ E+ f2 |% M. f0 C
;extension=php_mssql.dll& p6 c% p" H5 A. p$ g# X9 j
extension=php_mysql.dll+ `# M7 h* E4 e( g+ r( G
extension=php_mysqli.dll
* j5 H% z( t; c' i;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
$ C' o% m8 E8 P4 V! ~;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
Q9 c( {, j/ R+ d7 u;extension=php_openssl.dll& v2 ~6 D6 N0 E8 P
;extension=php_pdo_firebird.dll
- j% ?2 r$ X: o- \8 h) u) y, G;extension=php_pdo_mssql.dll+ r7 |4 j: c2 `' i* h5 L4 w
;extension=php_pdo_mysql.dll1 L q, k$ |, x% T2 i; [
;extension=php_pdo_oci.dll
4 x7 \7 A) ]( r4 W+ i* j0 e& j;extension=php_pdo_odbc.dll
z; H1 _4 _7 Q0 G) M. g7 c;extension=php_pdo_pgsql.dll
- ]8 @: S+ D" K9 {& D;extension=php_pdo_sqlite.dll
- y# o$ C8 d4 b- V4 H' s) ~, g: ~;extension=php_pgsql.dll
1 Y, F7 x' y3 E" }2 ?6 u;extension=php_phar.dll
' O8 E* R/ d% a, n; ^# ^;extension=php_pspell.dll/ T" i0 G" h0 ?/ E* n# p
;extension=php_shmop.dll$ Z M3 Y3 b- S K( i3 j+ e
;extension=php_snmp.dll% |; Z+ ~9 ?: P7 W
;extension=php_soap.dll
2 c" z& K: \+ [# w: \' L2 {/ t9 k;extension=php_sockets.dll# h( K# w/ P% ^
;extension=php_sqlite.dll( i- j! U6 {9 Z
;extension=php_sqlite3.dll9 Q/ v* s" u4 v5 Y& z
;extension=php_sybase_ct.dll
0 P8 J* T2 k* l* z7 h6 t+ d;extension=php_tidy.dll
2 R& b3 r2 e* l0 M" G4 c6 S;extension=php_xmlrpc.dll ~! H% r9 X( H- |# v* j5 q; n
;extension=php_xsl.dll- |: U& c' ~' d" K7 @' ?4 s
;extension=php_zip.dll
' `) W( q9 {. b( G1 V# C& R3 K注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)" \7 C3 H/ r8 p
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!5 }# g* Q7 g: w/ b% B3 p" t8 W
, R/ c" Q H" M, R) T7 x; P5 z
7 Q; s# M3 g1 Y# y5. 配置网站 . ?- x' H6 X3 D* r* S: y
# B7 I+ ?/ K! o" y* }
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
( v: l1 q. e& k2 t/ ~. M; U0 b5 S9 \- P. h% F: l
5 M- E- J# u/ J( T3 B# g8 l9 M* g7 p

, Z4 k+ O$ | c; ]' f8 ?0 q: Y" ~9 T) j
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
H( \$ _9 r3 E3 S* Q9 G5 Z1 G% A$ @
6. 写个 php 测试下吧 . S9 Y9 z% Y- C) k0 g N
+ r7 r2 g0 _$ Q7 M; P7 b0 V修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
) x. U' T$ I n$ V
1 N; O# `, s1 n4 E" x8 U1 j$ `- a% g8 N" v
, h) w+ x9 Y: ]测试是否安装成功!
7 e4 C! w. K: d, q4 {建立一个网站,phpinfo.php文件内容为:4 n6 {! ^) x4 d1 n3 i& @" L
文件:phpinfo.php
8 h, k, o% b4 `- l' D0 v<?php5 |+ Y3 R" ]7 Z9 i: V0 N
phpinfo();
7 f0 u/ a) N6 [& [3 c4 R/ |?>
8 X0 r: Q O8 v: R7 \: S- A d* V' _+ a+ o U5 e/ l( b- K H
看到类似以下效果说明你的服务器可以跑 php 了。
9 @6 E( {: V4 m2 v7 M0 L- u; i * |' W( ^/ L7 j* R7 C9 N
安装过程出现小插曲,如果运行测试文件出现如下提示:
3 K& b5 c4 T# b0 N先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:9 D4 x1 e6 ~- q: o. C; g
错误1,
9 K8 x1 P: O! q/ ~fastcgi error
! s5 _& d$ H, A9 t3 ?" k- Sthe fastcgi handler was unable to process the request.
+ l5 V! k z2 P--------------------------------------------------------------------------------
% R6 v5 G& E8 Z" l4 ~2 j* yerror details:
c w* @. Z6 k, X, Z) B! ?: _error number: 5 (0x80070005).
0 x0 o3 m7 ^* k: ~) X. Q! Terror description: 拒绝访问。 ' [) q9 v$ I) I/ h
http error 500 - server error.- c/ ~* j6 `/ h5 _/ s) _0 ?
internet information services (iis), q- k" T& T( y! L* F
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
. H$ `5 H& y4 t! q: ^3 m. u/ {$ v* S9 M0 T2 Y) N
错误2,9 q: u* Z. @3 B0 C$ j
FastCGI Error0 N x, _8 r* j; g
The FastCGI Handler was unable to process the request.
/ i; D5 e; W: U/ X" g--------------------------------------------------------------------------------3 D# i0 `6 U1 D0 @% U# |! |
Error Details:, v+ T6 G' R* n/ y O; g
Could not find entry for "php" on site 1960240566 in [Types] section. & u2 {5 V7 t8 u0 @$ r( @( D; p5 f
Error Number: 1413 (0x80070585).
8 g: O: C, I( t' QError Description: ?TD§?÷òy?£ . [3 T1 |( d$ K8 M6 N8 f9 Y
HTTP Error 500 - Server Error.- S7 W9 w: |+ S
Internet Information Services (IIS)
& J: B) b) e2 R6 @/ E! A9 J5 N" N& B0 b' j/ X% L" n0 f
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
9 L1 i, K+ X% E错误3,. I$ e2 K+ q, a) b" I/ T& ]
----------
+ S/ x! Z* p; L! d: kFastCGI Error
, Q0 Y, h+ ]3 ]1 b: x( pThe FastCGI Handler was unable to process the request. ( t. F+ {; D" z: r# b
Error Details:
2 [. g5 l4 k7 n% X+ f2 p- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
' I# H) I5 f' l! A8 S$ k/ ?Internet Information Services (IIS)
3 P+ L3 ?- q' E8 `* b3 I7 ^--------& {7 _6 N! i8 O" M* e
我的PHP目录在C盘
% `* Q- P: W h: E当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的.... _4 M: ~+ e. S Z7 W& e9 G3 |+ W; ?
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
0 G& x+ y' h: E, w: u& ?6 h" z+ w把 C:\php\php.ini 删除,搞定!- ?) d, u: f, z1 t; G C. T9 Q
随后用FakeCGI调试工具才搞定原因../ A D1 ?; t3 x/ t% C! h2 X$ d6 x
感谢FakeCGI,痛斥我的坏习惯!!!9 l+ r4 ~* y' ], Z! T8 q/ Z' H$ F' o
7 G* F6 |$ ?) @& R3 Z% b
' T) `5 q9 ~$ G5 A k# u) \( j' @& U L. e$ j0 Y
9 H# c0 R* F3 x! I0 Z9 |$ E0 h+ L3 @' H
PHP5.3.0特除配置" S; h k' t% {4 w/ B, H
一,如何正确调整上传附件大小限制?
2 d% `- q$ Z- ?4 t. a L修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:5 C/ c& [" r0 b
1. post_max_size =10M
5 k- t. y: y$ y. _) g/ }5 t v ?) j* V表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
L; \, e: u' m2 i# h* A限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...- b" o }! q8 f1 p8 q! C
2.file_uploads = On
6 S2 h: V7 U k& m: t m! V是否允许上传文件,如果为OFF您将不能上传文件., V. u8 J& k' C% q4 t+ a9 V F. p
3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
8 r2 p m+ s6 i* v+ _- B! w上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.3 ]6 d& u3 ~; D# \) t/ ?/ r) A
4.upload_max_filesize =2M
$ G3 W' L$ c# e# ^$ t( _$ Y最大上传文件大小,此项针对上传文件时单个文件的大小.7 n! J6 ]1 y- N3 m
与post_max_size之间的关系:4 ~& q; R* _) ^ D. I3 n
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
7 N4 e3 o0 t2 g$ }9 ?修改之后一定要重启 Web 服务。
0 z& v3 F2 L% w; Q注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
( ?/ J; D" l2 ^( T0 d) u- r* n二,EXIF信息服务器配置说明:
% ?+ G) B0 b. a( P2 g1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
* L5 K2 e% b \& ~2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前: ?$ l% ?! k+ g; ]7 \* L+ a1 z3 p4 V
3.找到[exif]段,把下面语句的分号去掉。% ~( @* h0 e/ Q8 V+ |- L
;exif.encode_unicode = ISO-8859-15
# l: y- e& ^2 c [" V+ U! I;exif.decode_unicode_motorola = UCS-2BE
5 O( o6 y7 t- v' e: e- ];exif.decode_unicode_intel = UCS-2LE
! C2 H5 D8 j# |1 M; l7 y& W5 q7 j# E;exif.encode_jis =
# q0 e& K$ M, m% J1 H" U3 A' r;exif.decode_jis_motorola = JIS
. G% ?0 u- Q! L, s. P; e* G% S8 g;exif.decode_jis_intel = JIS
. p+ K+ q5 O: L+ `, Q6 K" z0 mPS:
. W% _: m8 b, a安装版PHP的方法: 
7 J: ?: \# v: I/ `0 I/ D点击NEXT* a y2 _/ P$ h% F& O

) V! j/ w# z) V. a% T1 a3 o打上勾同意# `3 l+ V3 }* Q

3 `9 k: q% f5 F8 V" i6 V0 f出现安装路径,默认路径,点击"Next"
5 i2 V3 r( W, F8 m& _- y
* U% e! t& c8 ]: o: z0 C在这里选择:IIS FastCGI,再点击Next
6 @- b1 F! A c6 q
8 x1 K& i0 T/ u9 c1 C* j {然后在模块里选上# [- l8 [0 a% |% h# v
mysql
7 ?4 T" Z/ w; F. x( }GD2& {* q5 Q5 B1 R% M+ v! ?6 G( w
Multibyte String
: k8 a& J( p h8 [- X/ B! Wmcrypt8 p: `& e+ U! d2 O
之后点击"Next",安装成功!
6 { r5 n5 R. n6 ?1 N& D7 K! [+ ]; C0 }
; \; z( s, u! O7 s% i' G& W1 u" {! G& ?% q. ~- w/ o
待续: |
|