- 注册时间
- 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的完整方法
: q. \3 F6 T7 O* J! h: P5 t在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP
' R1 f/ y) u) Z1 mPS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
7 d# z+ l! \' T* i+ [. T8 {微软已经和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安装方法我记录下来,其中包括出现的错误.0 ?4 D# g. e' V; B" o Y
1.下载 FastCGI For IIS6
" D2 {1 i' F8 kfcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
. Y5 r. P: @6 n8 v下载:http://www.iis.net/extensions/FastCGI,选择: x865 Z5 h- x) } A( I* z3 _9 x
4 Z% d6 F' n9 Y p

4 V1 A( w2 R9 |0 K+ L$ j9 R7 _# c) m q
或者直接下载:http://go.microsoft.com/?linkid=9655696
: e9 s/ N" d/ X/ b
o1 [( g3 H4 j A3 Z下载之后,双击运行进行安装。
8 Z4 r6 y) c, b2 i: N; i(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )7 U; s6 T0 [. L- K
2 l N3 m p( g( r
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:
l% c( Z. A9 w. z; g
f! h, I9 g' n) f; R # O8 H: f" V0 d
& M( j9 T- P0 y$ \0 x同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。) m9 b" P7 x# e2 i6 B
* r( C. Q- e" r1 N# Q
+ _' K8 o6 @6 q, r+ c0 T
" ]9 P A( r% I' [2.下载 PHP5.3.0 Windows 版 O5 C6 J* ^0 Q* o. e+ C) V
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!8 n( o7 f/ x3 k3 _1 K
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
! B( o' h) U: u选择:PHP 5.3 (5.3.0)
4 b* J7 s% p" ]. v5 z7 U+ i: f4 _& aVC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]+ [: ?+ E& h! \
sha1: f049c806744855e4420844d47e051949fcf06661
T' J1 E& [5 u5 R' ~下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:
3 \, X, P% T0 `: `2 M % A) F3 ^* D% \5 w
. y R' m5 e) R2 T5 z9 X+ |. \ 3. 注册 PHP 到 FastCGI
6 Q8 q. }; z1 c8 f! J$ t( f3 x! j& q4 Y& }' K
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
$ U l5 S# R6 ~0 E; This is the configuration file for the FastCGI handler for IIS 6.0.$ W% D' J0 g! N6 M. s
; The FastCGI handler will look for this file in the same directory as M6 r, v% j0 f: ^1 |! x
; fcgiext.dll. By default, the FastCGI installer will place this file into% M& C+ U; }# u" f
; the %windir%\system32\inetsrv directory.
: L u: E. I* a4 E& C. s; n0 u
# N! _+ {, m i) p8 A1 U我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
( x1 e: R8 D9 ?
2 [6 q8 J u, f4 I% X5 \在 [Types] 下添加以下配置: " j4 _6 B3 f) ~+ T( t0 ]
[Types]# O( ~) V! T: D8 h3 F; z# A
( l) t3 e8 E" a- W2 }. W
php=PHP1 b" e, |1 O: x/ Y* W2 \
[PHP]
# c0 X3 [# U5 L: f9 HExePath=X:\Server_Core\PHP\php-cgi.exe
' T1 W& z6 A) L ^这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
( g% m' d( F* d2 Y
! Q- G" j( ]- ~0 ?' L" |4 f5 f# Z4. 配置 php.ini
" ^& s4 H: i3 u8 `将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
4 m/ }5 L8 J I找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面! R8 r0 E$ x# F8 T! i0 ^5 P* z7 J
[Date]
3 V- A/ F5 c/ g: m6 s; Defines the default timezone used by the date functions
3 n: i# ?) `( t; http://php.net/date.timezone( L O! @+ ]4 O% V* H# {
; date.timezone =
2 N& p; P$ _8 ?/ q" e更改为并去除前面的“;”: 7 _$ u4 t" p3 X" U# e
[Date]
! X; j5 K& N! ?( R# l7 T; Defines the default timezone used by the date functions! c' o* h. J9 N
; http://php.net/date.timezone. e4 s& U# d6 c" \& U- T b
date.timezone = Asia/Shanghai: O% C0 g; r' l! D. o
如果不改以上的date.timezone可能打开网页会提示500错误
' F. H8 v1 x- L找到8 v" s. E5 \9 S9 d4 }
; On windows:
" u/ c( V- k) A/ G9 m/ d% ]: K1 j; extension_dir = "ext", _5 I- f! |9 h/ o+ q
改为- _# M, Z3 z+ U
; On windows:. o, @4 ?, s2 x
extension_dir = "X:\Server_Core\PHP\ext"
K1 L* k* S2 F2 O0 j& Z+ E" r8 N3 D' ?# S8 G0 u
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1 $ v/ j) L, ?( P* M( T0 l
如下图:$ W$ y: v+ l2 \7 K
$ w* O- {4 v. \& u
- P" o+ A2 G4 p4 X* X5 N找到:short_open_tag= Off;改为0 M, W2 V7 ?9 c2 V0 W2 i/ c- ~
short_open_tag= On
# v" } }! f6 U; h+ M9 I* A8 a) v0 _; W. d1 Y. m2 \) \
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
+ T/ {( \; X4 Y, N6 x# s; B% x+ R/ s;extension=php_bz2.dll9 Z3 z' Q: {" W: u! a( F! a1 @+ H
;extension=php_curl.dll
% p, {0 l9 N: R( W/ m7 l' S% k;extension=php_dba.dll0 k7 Y& n! Y5 l" J* ^0 y+ g( D9 i- o
extension=php_mbstring.dll
3 T1 ^; A0 n" z. U; `: aextension=php_exif.dll
# t& f7 q ?2 {;extension=php_fileinfo.dll
0 Y! m7 q+ H8 I7 ?7 xextension=php_gd2.dll7 h; p) q- Z7 Z3 F
;extension=php_gettext.dll6 X7 A" `1 E5 m: J& H
;extension=php_gmp.dll
' Q* F7 Y5 X g6 s;extension=php_intl.dll7 V* [: T" {9 O
;extension=php_imap.dll5 ~5 L& V) D7 m6 d6 U; f
;extension=php_interbase.dll
5 z: G. ^2 |- ?3 S: @% R( ]extension=php_ldap.dll# x5 D& `# c+ j/ ^
;extension=php_ming.dll
+ h* N1 w4 m ^4 ^+ W;extension=php_mssql.dll
; B) J7 U8 Z1 B9 z( H( r, lextension=php_mysql.dll3 L/ N% q! \8 [: C) H: I
extension=php_mysqli.dll6 Q0 l7 W& n3 r/ M s; ]! o; s
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client* L; B4 W: W; g
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
" |8 n/ X6 ?3 E. R6 M" |2 u;extension=php_openssl.dll
; M! P. ` Z( G; O+ u;extension=php_pdo_firebird.dll
/ A0 s+ f" S# l9 b! Z;extension=php_pdo_mssql.dll4 q+ U6 C, `: X7 q# Q5 T3 t
;extension=php_pdo_mysql.dll
4 T. c6 }* o- y* X' B0 f" T;extension=php_pdo_oci.dll
3 Y4 o$ m5 r g! N! q1 k;extension=php_pdo_odbc.dll* v9 ?9 u n5 X1 e2 t* s0 Q
;extension=php_pdo_pgsql.dll8 z C0 s8 e Z. Y$ T3 ~
;extension=php_pdo_sqlite.dll
% @# s: m: L( T;extension=php_pgsql.dll
9 T& w! {" D' W/ s;extension=php_phar.dll
* i" `- P% {. ~: p+ v2 F! t;extension=php_pspell.dll" h( R8 T6 S5 o) T" ]: C
;extension=php_shmop.dll8 R1 @" E6 Y( n% C, l. _" K
;extension=php_snmp.dll
1 Z8 _! p* W% w9 z1 \% [& q) P;extension=php_soap.dll
; @# D* A- o. `; G;extension=php_sockets.dll9 p! }/ Z) ^- O+ Q7 p3 q
;extension=php_sqlite.dll
( h6 p/ G* k' L0 \ L7 E0 C3 \;extension=php_sqlite3.dll9 Z6 R# i. C' k5 N: Q
;extension=php_sybase_ct.dll
% ?2 Y3 K3 D" `;extension=php_tidy.dll
8 n# N i- O! g& H' `" s8 N;extension=php_xmlrpc.dll
( [9 z3 Z* ~* f1 J: A6 ?;extension=php_xsl.dll5 J& k! l" [6 W) b3 }5 S! m
;extension=php_zip.dll
, H$ h y {7 Y- U$ Z5 x注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
, i) T5 v6 h/ u保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!: h7 m& k, u, Z$ w- g: `3 K
+ j' e" m' s$ d( p7 s& B$ G& u
# _5 {! l- b$ D& ] _
5. 配置网站
" ^/ J7 ?% A, M1 O$ Q0 p% U7 L3 _: ^5 ^1 A$ ~$ E
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图7 ]/ Z6 G3 \! G: y, ^
' i0 B4 v1 T5 |8 H& ?8 u- x5 |; R+ i/ ], p, B/ C
( k! x' ?/ e+ K- `5 m$ o: v# x
$ F$ o- V! S3 e q6 d& p$ R可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
7 g9 Q- H( F. `. ^6 i
: j5 T* z; p c0 Q2 h6. 写个 php 测试下吧 ( E) i2 K7 Z0 t+ O! H6 K: ]
9 q3 B& r1 U! H7 n) \& \! V修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
0 d* A6 K, s2 d0 n Z( o/ v1 M9 _4 K K
1 B v$ ~5 h& C/ T
7 ]$ k7 E' P/ Y0 V3 R测试是否安装成功!7 Q O6 O+ p7 f% [ X5 O& n0 R
建立一个网站,phpinfo.php文件内容为:
, r% D2 A2 {1 h文件:phpinfo.php8 C0 ^7 G; D( R4 _' f2 z3 z, J% x! a
<?php
" ?* N: @* l1 p& t: S6 ~* @0 Wphpinfo();
' X4 L& V! ^1 q6 s7 Y% m4 b?>
r) \3 f/ ~8 E/ i% v, Q0 c' l {( z# _$ K( \( x* ^
看到类似以下效果说明你的服务器可以跑 php 了。
- S$ O1 o9 {2 Y5 W
$ c/ P1 n# r& ]: t" H安装过程出现小插曲,如果运行测试文件出现如下提示:
# P% m. l; r9 _6 u: {. t- V先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:5 T4 v* A# z2 w0 A9 T8 n
错误1,
: d6 Z, |6 a' D5 ~1 W/ v% [$ nfastcgi error
! U$ L* `' D. d" e) x: ethe fastcgi handler was unable to process the request. ( u3 g+ h: J: X" Q
--------------------------------------------------------------------------------
2 @3 @$ E. v1 i5 R# cerror details:
& {# x' t& S' [4 C5 i3 Yerror number: 5 (0x80070005).
5 [: l) W" x8 d6 M- ierror description: 拒绝访问。 ; L& s! |7 i4 O+ C$ R
http error 500 - server error.9 `% h$ ^9 y- i2 w- s
internet information services (iis)
( G0 o# {: \# n( s1 X% [9 P8 m这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
: ]& T9 K6 I/ K- }$ P
% x3 D( v3 {1 J6 y. }2 h# B错误2,
: X* _1 ?2 d9 u+ ]FastCGI Error% _0 W E1 P! K
The FastCGI Handler was unable to process the request. 0 Z8 W9 J4 O6 X" q, _* W7 i: _
--------------------------------------------------------------------------------
! | ~* h/ |' zError Details:" V0 F+ u+ _4 Y( q& _' @4 ^; G
Could not find entry for "php" on site 1960240566 in [Types] section.
' f0 g7 `1 ?" _% L- V3 t( jError Number: 1413 (0x80070585).
u* s- s) I$ }* V6 ZError Description: ?TD§?÷òy?£ % {" [6 H% Q! E S7 I. ~
HTTP Error 500 - Server Error.+ ]6 l+ V' Y& c# q- ]
Internet Information Services (IIS)
3 p7 Z, R* c e. @1 {4 |
7 T6 q" ]: }) D6 b" h即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
' r6 \1 F% z/ ^; d; B3 f- u, u错误3,
& V: l, M* E/ n& y; {----------
; g5 e6 I/ n7 c* g$ z. d2 c) Q/ aFastCGI Error
& Z0 _. Z6 ~) ]! F; d2 }The FastCGI Handler was unable to process the request.
& j# \9 Q/ M, P4 N/ u) H, {5 I3 zError Details:
: g5 \* m. I3 J$ ?- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
( f* I# I* e# i" j& D: u) s5 R6 qInternet Information Services (IIS)
$ A" c i* S% ?3 N; S0 }- L--------
* T( W# q: ^& u4 F我的PHP目录在C盘 2 C% A- @( e8 n( r6 {" [
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
, m6 V5 H" `5 {6 O: C结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。5 n7 g5 F* u' c5 s3 h& ]6 W
把 C:\php\php.ini 删除,搞定!
1 n7 G) Y/ K2 c9 }) Q. W随后用FakeCGI调试工具才搞定原因... p7 I" I! n4 K* T5 a6 y- i
感谢FakeCGI,痛斥我的坏习惯!!!
, z J' z- D' q2 j5 W3 s9 ?9 u1 X8 V% O! J
4 M" w6 P+ u8 |1 i3 X5 T. Z' m1 S* y2 I
) q7 P5 ~5 b; Q4 V: _7 U6 L8 z% l t& i+ w7 A+ P
PHP5.3.0特除配置
9 J' }1 j% n# ~/ _$ ~一,如何正确调整上传附件大小限制?
" B9 L& u# B0 V) F$ f; V' d修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:2 r+ L4 o7 q! ^& ^& j
1. post_max_size =10M 7 \3 V3 u# R$ |# p0 {; f
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
- V$ U( H0 j' J( W0 L限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...% C, m! _# I* O7 E8 B1 |& x! k
2.file_uploads = On
( q" h* ^; ]9 ^' R1 R是否允许上传文件,如果为OFF您将不能上传文件.
) Z% e1 I4 C f! U) |3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
; C8 {4 Q3 @4 s" K上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
" ?. ] S# ^5 W3 A ^% }) H+ y4.upload_max_filesize =2M
+ ?( ~8 ^0 p% N9 s, s最大上传文件大小,此项针对上传文件时单个文件的大小.
* a" w9 I: y. g5 U9 U3 p3 U与post_max_size之间的关系:
$ u7 `* K/ \6 s在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
5 k0 K3 A& `9 M; C2 w# [. a/ H修改之后一定要重启 Web 服务。
" |" W! o h% U3 o注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.7 J; ?; ]0 E+ i d
二,EXIF信息服务器配置说明:
. l0 C: z# f5 ~* {( I( @1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
@$ u+ K8 G( h- e6 L2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前( @7 X; G- `+ b, ]/ D
3.找到[exif]段,把下面语句的分号去掉。
& ^. E- W& Q7 Q3 z, d+ r9 F;exif.encode_unicode = ISO-8859-15
8 U+ N0 }& }' B w* A4 D* @0 P e4 ~: r7 d;exif.decode_unicode_motorola = UCS-2BE' Q% ~; C9 G9 p1 p
;exif.decode_unicode_intel = UCS-2LE. T4 v6 `( S. x6 q4 L/ V7 o2 p. H
;exif.encode_jis =
$ w& }8 ?, V" [5 K% c$ A;exif.decode_jis_motorola = JIS& j% c( j1 I3 j; ?6 I/ x y
;exif.decode_jis_intel = JIS0 \$ J* H8 |; o9 V( K
PS:% b7 w' _* k5 Z; a6 q
安装版PHP的方法: 
9 [) B; }) c; N' a6 m7 k点击NEXT
; v% s$ v4 ^9 }) ?( y % m( n7 [: c, y6 U& E- X( C6 q
打上勾同意( ]+ o% f' V. `1 A# k* e8 l
/ C h% G% k F$ w0 N. N
出现安装路径,默认路径,点击"Next"
' P6 R* r h% Z% I " |8 z/ l+ \! F* ^" k p' e
在这里选择:IIS FastCGI,再点击Next p. p% @1 T5 D
2 x4 W6 C6 }, _/ z: V# G3 h8 m0 }
然后在模块里选上# a, h5 g# g& W# Y
mysql' }! ?$ W& F1 Y$ K
GD2, E4 Z: m0 X: s k9 F
Multibyte String
& M. ]" L X: Q; T. |mcrypt4 P# K% E L: H4 S9 a+ x% M
之后点击"Next",安装成功! 9 S- z {5 K4 Z7 z+ U, W
. W# t1 q$ I* ~
8 R- h2 Y9 ?* H- w8 z) W
% }! x D/ \* m+ b( W A1 m
待续: |
|