- 注册时间
- 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的完整方法5 O* H; m% }9 W5 ^5 j; H y
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP) ~, w% s/ H' _6 ?! X% F/ ~, r
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
, E2 [1 w6 _0 v微软已经和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安装方法我记录下来,其中包括出现的错误.1 P6 d6 r9 x% b" ^3 d. a1 X8 F
1.下载 FastCGI For IIS6 . ?( t E4 c' a, n5 P
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
% E Z, p4 k4 o# e0 S下载:http://www.iis.net/extensions/FastCGI,选择: x86
% l5 Q' k1 @7 p7 s$ A3 Z& V; e5 O7 @2 w, R( D
. U% C( I) F% O* C8 h3 u3 Z c% Z' F; w) Z, l
或者直接下载:http://go.microsoft.com/?linkid=9655696
. V w4 }8 |/ X% `3 p4 s
& q1 Z& n e7 T' M. I: |下载之后,双击运行进行安装。" z& [- E9 f7 _- `
(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )
3 J/ r) ^% ~: |( M4 g7 M
# f/ d; o2 W, L3 [$ [7 J安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图: g/ G# @. A) {1 s
, X4 W8 b/ k' g# a: ]" r
: G1 g" B" X" C
% p/ j' ]: X% X- b: B, `9 ~同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
. b! g7 m: l4 a/ Z l( C7 a
3 H- i/ \$ U) l
6 w* Z/ p/ f- z3 H* E! ^
+ P7 j0 b& S, e, K2.下载 PHP5.3.0 Windows 版
: M$ a0 p+ y( W- J由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
8 H/ |& u$ g2 p. ?! t新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
1 a: a# M( [* U0 M5 d: R选择:PHP 5.3 (5.3.0)! @; x' u5 O1 X# @. V5 e: n" h+ t8 g
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]7 k5 \& V, f- V2 C& }, V+ p% _: p
sha1: f049c806744855e4420844d47e051949fcf06661% E7 E% N4 I4 \) E+ b! L% k6 o
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:% Q) [$ M4 q2 h, {
* O8 A3 Y; y+ u+ Q( m& ^
+ U! D; G1 t* h5 B. d% g3 u 3. 注册 PHP 到 FastCGI
) f5 ^) Y3 X2 r* P& o) s$ r& w- H, B+ g- c3 G* P @
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
/ {; B& s# C2 S! U1 ^5 u. |! Q; This is the configuration file for the FastCGI handler for IIS 6.0.1 x+ K: [" X. h% h
; The FastCGI handler will look for this file in the same directory as$ B; |( ~( s5 G" s) j9 e
; fcgiext.dll. By default, the FastCGI installer will place this file into2 L+ f: a" Q5 }. p
; the %windir%\system32\inetsrv directory.
0 E( k9 I$ e# y {8 ~9 c& n
h2 l) N0 k0 g3 S我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
2 N2 x8 ]# q3 ]6 a8 ^" y3 \* k
5 i' e+ N, Y8 J2 B! p在 [Types] 下添加以下配置: & T, N& t8 s# F. q
[Types]
! S" j, o% ^; t# ~8 p3 D
% s' `) C8 t1 yphp=PHP
, B+ [% [3 L; K: Y. c[PHP]8 Q ?7 G. [+ m" g- B* J; o
ExePath=X:\Server_Core\PHP\php-cgi.exe
1 u( R8 ?2 A) C这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。): G- z+ s# ]+ D
: h, m) e0 F! v% M+ { F- E3 @ b
4. 配置 php.ini
! |) s, P& X2 v, U将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
( E; y* Z) [1 S+ q+ G8 z找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面; n. g: `5 z9 d0 c' S2 |
[Date]9 i( w6 K" F3 I' v5 `' \4 b
; Defines the default timezone used by the date functions
% U/ Q' |& I [# \# C9 f4 y; http://php.net/date.timezone
) i1 S. _8 i6 A! Q, t0 t% c1 p; date.timezone =9 L8 U8 O) p% Q" e4 ]: c! d
更改为并去除前面的“;”: ' H5 u1 L/ A/ f( }; D
[Date]
# x7 T( D5 i% u' \- j9 A; Defines the default timezone used by the date functions+ K, k2 _; o; l7 _4 A" g% {1 @! z
; http://php.net/date.timezone! H0 h; B8 p& X0 R
date.timezone = Asia/Shanghai
8 y/ M2 H% A8 i6 O! C9 n如果不改以上的date.timezone可能打开网页会提示500错误
, _! q' Y$ c' H7 u7 |- B找到
' M ~' L8 {2 O! S& h# R1 X4 Y; On windows:- X; C1 ?- Z- k$ Y. h
; extension_dir = "ext"
( f. G) \4 L( I/ P! ?" |* g! y改为
, A( ]7 E1 i z' M" k0 ~; On windows:: h+ v) e. L+ r0 _% J6 |) e
extension_dir = "X:\Server_Core\PHP\ext" , N* \- y6 B/ |0 R& H4 N
8 s, X3 Y2 ?' B! n" q G/ k% z找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
. q' X# E4 Y; D% M; J1 A9 z6 E如下图:
; O$ ^: ? m; \ b# ]# P
1 w$ L$ b9 J d- `. ]
/ ]8 y+ c. \3 p4 h* `找到:short_open_tag= Off;改为; i" A( h& D/ v
short_open_tag= On
( O% }8 q) K% M$ D; Q: u; q: [
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是2 M1 E/ t3 g7 {$ x3 p
;extension=php_bz2.dll6 |. o, d' F E9 c, C% T
;extension=php_curl.dll
7 u6 Y6 H; |9 P9 C% n, j2 j# C;extension=php_dba.dll
; [( g, b/ \( Y: {. M+ X, p3 o' I8 Aextension=php_mbstring.dll/ [& Q' ?# n1 H$ _6 ^; ?3 g$ D
extension=php_exif.dll- W+ b# y" d) h1 n# a
;extension=php_fileinfo.dll
$ t+ a# m7 w$ o0 Kextension=php_gd2.dll
) f" I" K$ J& i4 m' R, S- i;extension=php_gettext.dll
2 v$ S. f* D0 F;extension=php_gmp.dll& l8 j5 w [8 C5 Q" T( S7 b4 N
;extension=php_intl.dll8 X [! p- B9 d) m
;extension=php_imap.dll. o+ d2 r I' i3 c/ s* }: v5 v
;extension=php_interbase.dll
# B; J/ S( b5 }* m$ E7 T6 Iextension=php_ldap.dll) I. q. I: x: U9 x: m* @2 h) J( l
;extension=php_ming.dll
6 E0 [1 Q: {* t5 ]' U;extension=php_mssql.dll
8 L) v6 X: h: a3 B1 C6 Y0 Vextension=php_mysql.dll, Z% y) m$ a, s5 I3 d; z/ L
extension=php_mysqli.dll
! l5 l% U6 J) ?5 u;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
9 R# N$ T4 V7 n) T3 z( B$ z;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client- ]- H" X' a% Q
;extension=php_openssl.dll3 k# s5 a) G! P: e1 D
;extension=php_pdo_firebird.dll9 w6 O1 ~5 G% d% s% w. W% c
;extension=php_pdo_mssql.dll) G. J; q# `6 [& Z& w# J
;extension=php_pdo_mysql.dll. m! h. A; Z0 \! j d/ N# O
;extension=php_pdo_oci.dll1 L) Z; r% p3 c
;extension=php_pdo_odbc.dll
3 W6 L& b/ `1 O% X# R$ A$ [;extension=php_pdo_pgsql.dll7 m# T8 |7 ]' l% s1 N
;extension=php_pdo_sqlite.dll
2 F# ]3 s/ ~, C) Y' K; @0 u8 v;extension=php_pgsql.dll
# U2 @; T4 p) o+ v6 v;extension=php_phar.dll
4 l" H. @ H! m4 x* r& T- K0 z6 b;extension=php_pspell.dll2 L1 d/ f! q$ {' a# X( X3 H& v
;extension=php_shmop.dll5 g" y2 Z" K) h
;extension=php_snmp.dll B* C; o, N5 {4 p! u0 x
;extension=php_soap.dll: Y) ^7 n8 X3 g% ~
;extension=php_sockets.dll' v, }7 m" L( v- u1 E3 Q( z5 \
;extension=php_sqlite.dll+ S) u5 e- X) O& K& G0 M
;extension=php_sqlite3.dll, B: k) l: T: \7 T" s
;extension=php_sybase_ct.dll
- C6 Y0 g/ G5 `& K* C i;extension=php_tidy.dll% q, D4 q& F& l1 Z O) @% s1 Z. @
;extension=php_xmlrpc.dll
4 C7 j6 ?8 e- O2 O7 d;extension=php_xsl.dll
; ~8 S) Q) b! z( T+ e! d;extension=php_zip.dll
- {7 g8 R$ O6 W: f- W/ X注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
; g- y" B. {/ G# J: D# y- L保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!
, A2 Z- v$ Y- M/ e: F: }
+ y" j% X# e% ]% \" R. Z8 K& j i6 x: S
5. 配置网站
8 {& _* J; f7 `% Z% }) [! q! d" L8 x+ i2 D# K5 r
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图9 H5 x; R/ l; y/ f7 s
) R) I+ G/ q# y3 D7 t. u1 o
. M5 c0 d4 ]! P/ T" o; Y) T8 {
+ a- m2 u0 Q% x0 J' s" f6 } Z
1 R4 L" O( K$ x+ |3 t" ^* H6 j$ C* Y可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll % y3 `- e9 _5 ~/ b) w# C, X" \
7 p+ @* v; F9 t" U& ~6. 写个 php 测试下吧 ( Y; U3 z! l! _0 t
8 a) ?& q3 L! e. c修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!/ M- Z( y1 T3 U" ~5 Z j
$ r" R5 I9 J% Z* [8 j
r# I" _& g: M+ `+ H' h
6 S2 F1 H d4 x8 K测试是否安装成功!0 q4 f4 e2 K0 ~0 ~ k
建立一个网站,phpinfo.php文件内容为:
3 u) x5 P8 y) L; p, f4 ?/ w文件:phpinfo.php
; }5 I8 a8 m! J0 A<?php7 G! k: S( Q; _8 p7 ~# {1 s
phpinfo();" n' x) v. V' z, L
?>
- i4 `7 ^9 H7 i# M- P/ H& d) z$ p
看到类似以下效果说明你的服务器可以跑 php 了。
# m. A! z0 I1 k: M2 E" d2 _$ W, q* O/ D3 n. F
安装过程出现小插曲,如果运行测试文件出现如下提示:
3 M( `, m- Q9 e3 J, \5 y先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:
- `8 k( D2 L- A" C" ^2 k# j错误1,
$ n! S- }0 u" ]/ [( z% X# dfastcgi error# b5 w4 I- P0 c/ {+ |1 R
the fastcgi handler was unable to process the request.
( S& M n) C+ i* |--------------------------------------------------------------------------------, h; ]) V7 W6 M& y0 S0 j7 F$ D
error details:" V. u* t% V. o: d0 ?* U4 n* u2 B
error number: 5 (0x80070005). " }: D* }* M) U% I
error description: 拒绝访问。
" ?! c: ~1 o5 e2 {% p. N" |8 w- qhttp error 500 - server error.& R* J, ]5 ~6 o+ I" }) Q, b: U
internet information services (iis)$ J8 U8 h2 D. W0 z* O' w T
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
; e6 m( Q! s4 E- f
6 m# b. C7 c6 z C9 `! W7 a6 z. L错误2,1 k' |6 E, O9 K b( P
FastCGI Error9 ~; X2 K; \7 n- F ]: X+ T! G
The FastCGI Handler was unable to process the request. 4 v' f/ I! ] D
--------------------------------------------------------------------------------
" G- p+ \9 h$ b8 Q% F- M9 \Error Details:
5 V; M: t- d4 O: WCould not find entry for "php" on site 1960240566 in [Types] section. 2 s. q; t2 s* v
Error Number: 1413 (0x80070585).
) @9 [8 L7 ]6 A# ~4 a4 Q$ ?Error Description: ?TD§?÷òy?£ ) W) c% A R( W1 `
HTTP Error 500 - Server Error.
9 r2 \/ Z3 K6 g( `Internet Information Services (IIS) 3 v, v4 Z a3 T
% N, L- n, f4 y8 m* B# n4 N即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
' R: f% n- D+ g4 j7 ~5 w+ I4 L) D0 E错误3,
' f7 P1 Z2 }) @$ K5 ^' b6 O' }----------# _, n) {1 n& y
FastCGI Error + Y! K V9 j, X' H
The FastCGI Handler was unable to process the request. : J5 y$ h. @: t4 ]3 ?9 |
Error Details:
: L' j K8 W- ]9 }) w+ G4 i- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.! B" W+ r: G8 V. b" v; c0 l
Internet Information Services (IIS)/ |4 y% L5 X1 y" _ `
--------( p' B6 q8 m6 L9 i. a
我的PHP目录在C盘
5 B9 k$ I2 y9 k) s1 Y5 k5 W* b当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
4 \& V, x% e. i- P结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
& _+ N" j. z8 o2 |$ J把 C:\php\php.ini 删除,搞定!
3 b! ~+ T( K7 L# x: G5 p随后用FakeCGI调试工具才搞定原因.. ?) k \+ S( J7 U
感谢FakeCGI,痛斥我的坏习惯!!!
/ P7 K3 W* t) v& ^7 Z) r
- f2 a0 g0 C5 _& e. i2 V; n4 ~* u( c, N" n* J2 {. ^/ I. W5 g
+ ^" X1 I! f; p2 ~' e+ Y" m' C
/ N( v f% v/ @* n) I1 @# Y- ?
+ T' L3 p! ?0 _5 {- l6 h5 M: Y3 ?; cPHP5.3.0特除配置
6 D/ v; m5 l* z一,如何正确调整上传附件大小限制?
( b, E3 J5 Q0 u, ?) S9 \; s7 F修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:; Z! [0 Z/ n2 |# O/ t7 j+ J
1. post_max_size =10M
5 j/ L* x5 t5 R5 b D1 h7 W表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.4 z7 [: S* d8 R) @1 T
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...: x/ v+ r# J* F& ~4 f0 F8 W3 q; L0 z
2.file_uploads = On
8 u1 T! o5 l0 a! I# \* o. w是否允许上传文件,如果为OFF您将不能上传文件.
$ Z6 j0 y/ b0 d) k3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\" + H6 Y' }+ t, T3 q; Y- F( D* D
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
, q' S- T; H0 I+ t z* k! O4.upload_max_filesize =2M
1 ?$ a/ k. }+ z5 [- E最大上传文件大小,此项针对上传文件时单个文件的大小.' ]. M! } X1 ]9 M& t
与post_max_size之间的关系:) \! |' K- f2 \9 d' Q* u* C4 b
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
0 |& j! N7 R# S5 v' k3 h修改之后一定要重启 Web 服务。
& f& F' w7 T: S# l0 R1 ^注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
3 _, V0 l/ O5 A6 K% H. L二,EXIF信息服务器配置说明:
" ]' t. P8 S {% k6 T! t7 F, n1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号8 I6 |$ u+ p, s& V" H. h+ O
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前
# @4 T9 U6 u. h" ] p2 v+ p" y, T1 n3.找到[exif]段,把下面语句的分号去掉。: S, o4 u/ Q, e4 |" @
;exif.encode_unicode = ISO-8859-15
" r. ^3 \6 [! u;exif.decode_unicode_motorola = UCS-2BE1 b2 Q2 c5 I9 f) P/ J7 Y
;exif.decode_unicode_intel = UCS-2LE' [2 h$ t( j; |+ W
;exif.encode_jis = 4 A4 n, J& G" x- t# i, P
;exif.decode_jis_motorola = JIS
) j8 i+ Z. h' [- \5 S1 k;exif.decode_jis_intel = JIS
9 b8 z0 _8 O$ ] @ ZPS:
2 ]. h" l6 V( [/ e" h4 r安装版PHP的方法:
" _5 L0 l% T; j! Q点击NEXT
- y( S, e U0 ?: z Q2 m+ a' w! X `- u1 E! h
打上勾同意
( k! i) d! {! P" o% d* q3 ~' e4 V% p' C2 S1 ?4 g& R
出现安装路径,默认路径,点击"Next"
; s. G% T/ Z, p; u# c/ [5 h' f, }4 q! p* X, l1 U( x5 x9 K3 K
在这里选择:IIS FastCGI,再点击Next
8 x& o" y( V) d. u
& I: f" i/ V# L. g; i+ B2 V! C然后在模块里选上
7 _# N1 W5 f& l$ a5 s6 C# N ~0 qmysql
* M7 Q. V9 j" `. n8 L4 kGD2
! q1 y; j, K+ r" O2 mMultibyte String
# T6 x/ p6 c8 r+ |' a* a2 @mcrypt
3 b4 f! S5 i4 \2 P+ O% v之后点击"Next",安装成功! 3 m" Z9 Y" _# s0 F; M
/ F* \1 c/ U( M% u2 d9 F2 w/ q$ t C/ V, `3 n6 m
& S4 ~' ], P; e F( }待续: |
|