- 注册时间
- 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的完整方法
3 @9 e9 t" W9 I. e1 \/ o2 n在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP
/ L8 f' u: T# m! GPS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0+ B: n( U* z. B: i6 P8 i7 c
微软已经和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. p; o; ~+ N
1.下载 FastCGI For IIS6
# _: `5 t7 |& G/ D) tfcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)9 L! L2 k4 M- }5 X9 f
下载:http://www.iis.net/extensions/FastCGI,选择: x86
# \ J5 l( `& y) Q" C) G2 I: u
+ i; P: ]2 s4 \- g ' \2 r4 r& Z" d1 S/ v3 a
/ [2 G8 J s+ X' d6 p或者直接下载:http://go.microsoft.com/?linkid=9655696% t- d+ u7 ^: W2 E) w9 Q) Z) U" e; u
4 ?# K8 X5 F) P
下载之后,双击运行进行安装。
5 Z& i1 [* s' @9 p4 A; w(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )
) |0 n# D. f% O- p/ D( W' g0 n- v
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:/ e+ y% b/ x( ]
h3 g0 m; T7 N7 X( w) @+ }/ F/ W 6 C2 d5 _! x6 c$ D1 z8 M
1 K2 Z5 d0 e* g+ k. _+ C$ y" v同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。& D, e! E0 E# M5 h' x1 e8 O
: S8 i' [+ E! G& I# ^0 s! y+ L R
6 h6 J* b' z* M1 V0 R( r. L9 E
) @/ `8 M% ]& X2.下载 PHP5.3.0 Windows 版
5 z' }. X8 s0 l由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!% B* K7 X6 y( g7 b2 [3 F/ D
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
2 e" i% g8 L8 q9 Z1 f1 k* [& N选择:PHP 5.3 (5.3.0)4 H! J7 y' H4 Y7 b9 M* C
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]* ^/ c7 U1 g. W4 h
sha1: f049c806744855e4420844d47e051949fcf06661- F2 m+ Q3 D5 h8 W
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:2 z2 y, \* u/ _ p
% e. W4 }. z* x) s- s, I4 R+ X, E: d7 F
3. 注册 PHP 到 FastCGI ; e; i! G* h9 s9 h, p6 m
0 L1 M K# B: k( U D8 u
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
* J; C& d# m7 }( `; This is the configuration file for the FastCGI handler for IIS 6.0.2 p4 @4 f" a& v6 D
; The FastCGI handler will look for this file in the same directory as
0 p( m* W+ {: x2 f% z; fcgiext.dll. By default, the FastCGI installer will place this file into
$ P4 e, _) I1 g; the %windir%\system32\inetsrv directory.
, M$ y Y+ ?: ]) i a2 F8 x$ w3 ~# x
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
$ x; b" B" Z- ]; o, t% J# t$ B9 B7 L
在 [Types] 下添加以下配置:
" q% K2 K4 N2 u% w; s3 t" I[Types]
" y% K( o. `- Z) a* i% P" q. f* E8 C( ?
php=PHP+ T; y. \- C9 c& P1 y. H
[PHP]
# K# M2 e, L/ j- DExePath=X:\Server_Core\PHP\php-cgi.exe5 F: x3 M! ?0 n" `& D$ ? q
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)+ M$ q! K- I2 o( v8 O, y; V
" a$ I% d0 t2 q Y1 r4. 配置 php.ini 3 v4 z" O( O; I' K: m% ]
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini 2 X. E* |8 n- l/ ?* W+ D. K
找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面! \/ N. n! A* P6 R0 L2 R
[Date]
: o( a6 J( i5 n! Q; Defines the default timezone used by the date functions
# r3 \! g$ o/ _! Y( T" e; http://php.net/date.timezone
! l/ f F' T! @; date.timezone =
7 O" B- F% Y" P; z# C更改为并去除前面的“;”:
$ @1 ]& r" N" J, n7 Y[Date]6 @( u, e; g6 A- W3 Z. V
; Defines the default timezone used by the date functions* `" Z0 M: U, R D! V9 R! E2 q
; http://php.net/date.timezone
4 h4 Q; D6 ~' j }' b4 M2 Ddate.timezone = Asia/Shanghai
! x( `2 K, N- j; T如果不改以上的date.timezone可能打开网页会提示500错误6 y+ N, F: t0 h' u' m& N
找到2 b1 l- {0 v6 D/ u z# S
; On windows:
, w& m7 w6 b5 h) ~- o0 @2 U; extension_dir = "ext"
c+ t8 x: @9 Y8 L6 [改为) z- [, Z0 @7 l* Q
; On windows:) [2 }3 [! ]) k: X: R. Y
extension_dir = "X:\Server_Core\PHP\ext"
; _7 E: h r) N9 ? ?- E& y# L( q; K4 w
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
! W2 c' i0 ?- Z3 S6 Z! ~ o如下图:
5 W7 K6 Q1 T6 X' M1 G
' Q/ G8 s% d; `# m' G7 W6 E
. P! P; j$ d) f) j1 v找到:short_open_tag= Off;改为 x- @: t( U* x. @9 n3 [8 G
short_open_tag= On: J1 H7 e8 ?, }. K
9 A* }2 W: h% g; O至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
$ u( G# @* x& D2 o1 ^* {;extension=php_bz2.dll6 O7 a8 w2 k R4 G% O, f2 R! I' s! R
;extension=php_curl.dll
+ i1 h: |8 g7 x9 W;extension=php_dba.dll
$ Y' z- ^9 [0 c2 m& @extension=php_mbstring.dll
% r9 S0 ~. a7 f, C6 h0 U7 kextension=php_exif.dll
) S* ?: a2 I0 m3 M3 v! P# \* k% Y;extension=php_fileinfo.dll9 Y5 j$ K9 q$ Z
extension=php_gd2.dll+ o0 `, k' s" [4 m- ~% x* i
;extension=php_gettext.dll a( M4 g- ~5 p5 d& G
;extension=php_gmp.dll0 i3 x8 |2 |, N$ X( a
;extension=php_intl.dll% y; f( q0 k+ a& W
;extension=php_imap.dll2 c6 k, M' ~' ~2 A: ?' _$ v) a# m
;extension=php_interbase.dll0 ]8 k3 ]+ [7 h! [6 {
extension=php_ldap.dll# S5 B; ^5 ?$ b! n% N; E
;extension=php_ming.dll4 j7 X% K) q5 M8 y, z0 c0 U
;extension=php_mssql.dll
$ i3 t( R. o. e2 M F* Bextension=php_mysql.dll3 @& c+ v6 e4 x' _
extension=php_mysqli.dll
3 l' w, B \& g1 q2 z. O; I% r+ \* ];extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
% E) P4 N3 {8 y0 x* @4 d;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client5 l+ J; V* y0 r$ F
;extension=php_openssl.dll
( [' z# ]# Z9 f; N3 I" g;extension=php_pdo_firebird.dll: Y9 B3 s, _' B* W
;extension=php_pdo_mssql.dll
) |9 V& L$ [) K" M" z;extension=php_pdo_mysql.dll9 K! k* i) _( i
;extension=php_pdo_oci.dll2 n# b8 H- z2 i r/ ^, J( V
;extension=php_pdo_odbc.dll
/ T" f/ W0 _. P+ c- };extension=php_pdo_pgsql.dll4 h* {0 X% A/ _" G: A
;extension=php_pdo_sqlite.dll2 W3 y- \ g# j8 y9 n, a& L
;extension=php_pgsql.dll' Z% s$ U! w6 R7 p, d1 C, ^- e# e" r4 M
;extension=php_phar.dll
k; O+ m) `! u# P;extension=php_pspell.dll6 v& n& f4 S: }( \1 l1 F
;extension=php_shmop.dll7 `9 F' e% Z- V: Y" ]5 G
;extension=php_snmp.dll5 T& ?! u" }. V8 _8 r$ C* L
;extension=php_soap.dll2 X7 F# @: _7 {* A5 q( |
;extension=php_sockets.dll
2 q) C; |9 I6 Y& s2 @3 c% s. y;extension=php_sqlite.dll) q' V8 j. H, p; e/ N) l
;extension=php_sqlite3.dll
0 ~' F; n! w+ G;extension=php_sybase_ct.dll
' y8 V P. ? F' ?! \; s# v/ b;extension=php_tidy.dll
9 u+ Y) D6 h, e2 ]( ?) {( C8 W) ?;extension=php_xmlrpc.dll: r3 S, s d% X- W" v: V
;extension=php_xsl.dll
6 u4 J7 E$ Q! G;extension=php_zip.dll
, d/ U6 S6 w& ~9 {4 Z8 U- B注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
% b0 ~! [. ]2 Y7 y6 r! P保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!3 X1 o2 s2 H- U" L# F5 f+ Q
; |* D3 t) s# d9 H2 f3 |
3 H* a4 p# Q2 H# o4 X
5. 配置网站
5 C# t& {4 E9 |7 P# J+ f8 x( Z8 u% E) d# V7 F! d
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
; Q/ Z x; Q9 a+ [; Q4 J' O" w) Q( o6 y( V6 g X
0 j# Z8 a4 Y5 M. C7 C
" O; x+ j/ M5 E; c: n3 a( f! i0 q" q6 z
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
6 I8 n2 s& n3 L a$ [9 P6 C; N$ M5 {1 i& [/ z
6. 写个 php 测试下吧
. y2 S* f$ J+ N' l- p# y, _
( A. W- ~1 R, n$ C' I: n修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
1 | L& C, p ^! H) P$ Q$ R
1 \4 [- V0 P0 {- S/ L$ y7 N+ k( n- s7 e
+ {3 ^, n* _$ f8 T4 E' v/ ~
测试是否安装成功!8 f. a, c& K) N: U' M
建立一个网站,phpinfo.php文件内容为:+ v/ F Y" S, L; P! |
文件:phpinfo.php
( @3 I$ L# [" f- G* l* j4 ]$ w$ {<?php' B4 S0 Q: g3 q+ y. x: s
phpinfo();4 Z# s4 s3 j* k5 h, g0 E9 Z
?>
( A) l& ?' y, f. k
- C. m4 B8 j* Y4 Q看到类似以下效果说明你的服务器可以跑 php 了。
/ t7 x- u; M$ M2 {; j% a5 |/ {8 _: A( H7 g+ o2 z: y
安装过程出现小插曲,如果运行测试文件出现如下提示:6 w" T- k6 E5 b4 B7 U9 b' M+ f
先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:. U; u) N+ k* }0 r/ l; {: y8 [# V/ d5 K
错误1,$ m! z! g7 L( }
fastcgi error0 Y! K$ d. h4 i- u7 h. i! T( w
the fastcgi handler was unable to process the request.
# K: T$ r1 n; s--------------------------------------------------------------------------------
( E* `; ~+ K' c2 ~5 ~# Q$ b2 X0 Lerror details:- g4 T' T4 m3 N7 [2 B2 C! i U, N0 z
error number: 5 (0x80070005).
" b" g& N# k$ e2 |error description: 拒绝访问。
& i0 }6 _2 l) w1 W& h% s' hhttp error 500 - server error.3 |+ P: @4 @8 E8 d) [. {5 E
internet information services (iis)
% {( N" i9 l7 b9 Q& O$ \这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
( x0 F' R+ S/ b# M5 Z' w% a! \+ f c3 Y K- E, E% w
错误2,$ r% I! |# a; u9 l. C0 ^7 g
FastCGI Error) L2 \6 @4 }7 |- ~
The FastCGI Handler was unable to process the request.
' s* l9 w6 \# {+ P: A--------------------------------------------------------------------------------3 l9 ~& K0 S8 r4 I5 \# i2 C- s" y( n
Error Details:5 @& N' J7 {; ]% J; e% }
Could not find entry for "php" on site 1960240566 in [Types] section.
# m$ p* S/ Z; `. ]$ DError Number: 1413 (0x80070585).
* A1 _! x' F- Z# Q% q1 o# Z( `Error Description: ?TD§?÷òy?£
8 i' S! K& j' l( PHTTP Error 500 - Server Error. k0 ^) p* d3 T- e
Internet Information Services (IIS)
- P7 q! Y' x4 d& w) V# ]. Y, a% [
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!) {6 x( i- p6 y5 j
错误3,3 h! K) o7 J' I
----------6 ? @( s4 ]0 M, e
FastCGI Error
- M0 L4 b' R/ s( h/ LThe FastCGI Handler was unable to process the request.
8 H( U" z2 [6 T5 ~8 [* ^1 Z% iError Details:
6 G x% j7 K& j# w- I) s# K3 l- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
( U7 v. Z% U7 i- uInternet Information Services (IIS)( O3 |9 R! @- ~. ^- f$ c1 D# i
--------
& n( n9 w. e. P% H. G我的PHP目录在C盘 5 P/ ` u+ P, D
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
: b5 ~- _$ n/ r结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
5 K L2 M! W1 n6 G6 S4 H6 |把 C:\php\php.ini 删除,搞定!$ i! ^4 Y' O( b- l" N" S
随后用FakeCGI调试工具才搞定原因..1 C7 q& v" B+ z2 d1 _8 C
感谢FakeCGI,痛斥我的坏习惯!!!
2 W5 b2 I0 `' E4 `
8 c9 \1 w8 g/ i
- K) m* ?( T! y2 {8 d1 ?. h/ b" A+ I) f, z$ M
* ?8 J9 a% `* U$ L
& |7 O+ N0 \3 z; o
PHP5.3.0特除配置/ l8 _- f9 ?: }0 \8 U
一,如何正确调整上传附件大小限制?
( Q9 G- K4 Y7 l5 i; r; ^修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:3 y" t1 O& y7 |. \2 c$ ^# V
1. post_max_size =10M 5 p6 e. Z+ }7 L
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.1 J ~7 i' ~1 v( O: L
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...% c2 C" w3 S; b
2.file_uploads = On
0 Q/ z: M4 n% M" |: a0 K是否允许上传文件,如果为OFF您将不能上传文件., z/ L3 F& }' }$ i5 o4 {
3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
5 G% C, ?0 T/ Q8 ^: T上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
7 ~8 P# A' ~0 c0 y7 m6 M% G4.upload_max_filesize =2M * t/ {7 D$ y+ r* Z6 V$ |4 f7 t& |
最大上传文件大小,此项针对上传文件时单个文件的大小.
' ~. X5 [& Y/ O8 ?) t# i! n与post_max_size之间的关系:
& K5 g8 p* T+ B8 h: b7 v) i在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.$ y0 P* }6 e8 J, e/ u
修改之后一定要重启 Web 服务。
$ N* x/ F& |6 e2 c6 k& \" g注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.! W, J* r' q2 x- Q5 u9 T5 M
二,EXIF信息服务器配置说明:; ?* U; l4 w. v* t4 y& [' w
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
# }' \/ D4 x# ?8 x" Z2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前 v. M: i$ V+ Q; S- W8 o
3.找到[exif]段,把下面语句的分号去掉。
+ v8 G1 k. e5 C4 J( b;exif.encode_unicode = ISO-8859-15
* T6 m) }. \. R9 E3 X* B" n; i;exif.decode_unicode_motorola = UCS-2BE
, T: z3 R [$ Q) S$ i;exif.decode_unicode_intel = UCS-2LE
, o' ]/ ]( e9 m9 Y. Y;exif.encode_jis = " J# @6 f, Z% v/ R& _0 O8 b3 B+ i, |
;exif.decode_jis_motorola = JIS
! }% j+ b5 {& n+ Z7 ^ M6 s3 H;exif.decode_jis_intel = JIS
) D2 K; e+ Y) F1 k9 y$ x0 bPS:. o0 r9 x$ }2 V9 j7 F6 t+ z
安装版PHP的方法:
3 p5 Y; P6 v7 O4 C6 z7 j点击NEXT/ M0 Z t; }' k/ ~" \: j
% w3 v' `0 d% K @/ p打上勾同意
* G" N# o3 N, q+ {. G5 d/ M/ u
5 ~( O# L1 f: I! ?% Y出现安装路径,默认路径,点击"Next"! p% d N6 D, x' L
2 Z" a0 D }2 D+ N; A! N$ W- t2 j在这里选择:IIS FastCGI,再点击Next# G J8 |+ u$ D+ \8 ]7 E
& ?8 P" j# I: D
然后在模块里选上5 Z& A( }9 g& E# W
mysql. v! _$ ~! b, n# j
GD20 n7 k4 c, h& R* v; H* k7 H
Multibyte String
: c# Z' A# l$ j% z8 j( |- b8 nmcrypt: I3 m6 O: S- m F2 Y* W+ \1 B0 X5 n
之后点击"Next",安装成功!
0 c J( b) v6 x3 H+ }; u: l7 ~$ o9 S3 T* `% Q% I
% t5 I- {# F. H/ }: Q4 K% I' C) X1 M l% \$ }. U/ T
待续: |
|