航空论坛_航空翻译_民航英语翻译_飞行翻译
标题:
参考资料PHP5.3.0篇(IIS6上安装)
[打印本页]
作者:
航空
时间:
2010-5-9 08:08:31
标题:
参考资料PHP5.3.0篇(IIS6上安装)
PHP5.3.0篇:IIS6上安装MySQL5.1.38,PHP5.3,Zend3.3,phpMyAdmin3.2.2的完整方法
9 B) c+ @0 e( q& R ~
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以
FastCGI
跑 PHP
# ~2 D. `, E* f
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
+ V6 z8 o8 B! y5 t) |: E% ^
微软已经和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安装方法我记录下来,其中包括出现的错误.
* m: h9 e/ v: c7 } J2 [3 n+ ?0 c
1.下载 FastCGI For IIS6
7 P5 e3 |9 [ A7 K, Z* f
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
2 Y/ z9 w+ ^2 O+ Z; Q! }
下载:
http://www.iis.net/extensions/FastCGI
,选择: x86
9 X- s1 X& R3 d( B
4 P6 q, T7 n( u5 J
- R& P# k" O' O+ |; P, B
' j0 i3 Y- }6 [' y* V& D0 o0 A
或者直接下载:
http://go.microsoft.com/?linkid=9655696
3 p/ k- _/ V1 }) s8 ~9 W
( f. }. y: R3 q
下载之后,双击运行进行安装。
$ ?+ q q8 J$ Z2 L
(FakeCGI调试工具(备用):下载fake.zip
http://blogs.iis.net/rickjames/attachment/1563148.ashx
)
3 k8 r! r+ Q6 C$ S* w+ J3 m
2 N2 }* z1 }/ s6 f1 a7 a+ x
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:
7 _& j% w/ h& Q
. c& G4 E+ X' @. j8 t2 m
8 M4 G& v& O0 X( t5 r% h" R( O' z4 l
5 p1 ~: F7 w4 `' O6 e7 C" |
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
; j, ]+ N9 K$ m1 ?0 R3 a
6 J! m3 w+ e4 V! q) D. E7 {
8 v8 A$ b4 [3 J; y- U
/ T( D! I' l o" e
2.下载 PHP5.3.0 Windows 版
/ b/ ~- U/ z- Y% z3 H3 B% ~8 f+ ?; g) D
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
" i, {' L8 a: z7 V# U+ o3 [; i! Z
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址
http://windows.php.net/download/
,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
: U* g. E: ^0 X5 O2 I3 P! `
选择:PHP 5.3 (5.3.0)
# W1 t% Q, c1 T
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
5 S0 o+ u( B- u( _ d4 Q; W' J0 w/ U" J P
sha1: f049c806744855e4420844d47e051949fcf06661
( W* P H0 \3 i; k r' `
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:
( j% v# c* d! H, t0 F4 |
9 j: l" ?. w m- G4 a, Q5 j$ I
: V3 j Y1 J4 T c; D
3. 注册 PHP 到 FastCGI
, \. v9 z8 C4 G2 J
% g, o& q) k! i0 c
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
" o5 d* p* T6 O5 V/ A
; This is the configuration file for the FastCGI handler for IIS 6.0.
" Z6 _+ D( t4 G- l) H- e8 H
; The FastCGI handler will look for this file in the same directory as
8 x: K6 G2 p) d3 p) T% A
; fcgiext.dll. By default, the FastCGI installer will place this file into
9 a+ p7 a. v1 e, C0 `! Z- |
; the %windir%\system32\inetsrv directory.
8 E! D0 V+ x! Q2 }/ |6 M
, `6 G8 Z; x4 T% |8 C
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
, _7 H* J0 F5 F/ s* W/ I
: Q2 S& i- T$ J* S# P: u0 ^7 Y' O, a
在 [Types] 下添加以下配置:
$ ?% r* L" j4 G F9 }& N
[Types]
" x/ h. E/ y9 M9 ]
$ I! ]$ T. |; n' J& b# u4 A
php=PHP
2 c/ o4 w$ K3 D+ [ b& _0 {7 B/ g: q$ i
[PHP]
' g+ u9 \6 ~6 w+ p
ExePath=X:\Server_Core\PHP\php-cgi.exe
6 _$ ]; k7 n# \4 d9 o2 ^
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
L; u% [. F* r# |; E! G
- d2 I! m) G8 M J# Y
4. 配置 php.ini
$ b, S3 q# ?2 [6 n5 \. i
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
4 P) y. R& }" F' o8 N8 p
找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
0 \2 C6 f- V. N7 x5 @
[Date]
" F `6 H! l7 m1 `
; Defines the default timezone used by the date functions
7 G* Y& _& j6 j- m
;
http://php.net/date.timezone
# l& i9 p. X9 k' G& `" H2 H1 F8 t
; date.timezone =
2 ]+ L: m' F. V
更改为并去除前面的“;”:
4 E, c3 W2 j4 \. o. p @
[Date]
* u2 Z# \% E$ X+ m7 S
; Defines the default timezone used by the date functions
4 b# v1 j3 J4 ?% v/ D
;
http://php.net/date.timezone
8 K1 \. C0 u$ r& q' |8 p
date.timezone = Asia/Shanghai
2 Z. \6 Y! v$ B! d' O- m! d
如果不改以上的date.timezone可能打开网页会提示500错误
! w& b. B3 V7 j5 P6 Z e+ k0 z
找到
6 P+ O1 ?5 R; ]' M) C+ |
; On windows:
& B+ N# t3 I& r- H6 C! N* ~
; extension_dir = "ext"
. N8 C3 b, D/ { J% O* x# ?
改为
: {7 D& o/ W( p0 Y+ s1 n l
; On windows:
8 k7 u" c) N" V# U2 ] d" f% H& T
extension_dir = "X:\Server_Core\PHP\ext"
6 \$ z4 B7 p' P# i7 s- k3 _/ K
7 f2 @5 k8 z0 c
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
% T" H, k V" X/ d& ^
如下图:
- Q# G2 P0 ^5 g+ Y2 F
* L7 ?8 a: ~2 Y# M
! T; a B- h- b: Z( @( }
找到:short_open_tag= Off;改为
. k; w- u M5 Z+ c5 N$ l
short_open_tag= On
9 [1 x' ?' K, M
( U$ Q) Z: S, P; A1 W
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
- K) @9 `4 X/ t: t) G+ a# [
;extension=php_bz2.dll
. R% U$ J( R* e, m7 ?; L/ m
;extension=php_curl.dll
/ l% B7 f( M* ]% v2 K
;extension=php_dba.dll
0 W! E5 |1 |+ @9 ?' M, b+ b; Z
extension=php_mbstring.dll
8 J0 m& i x j- J
extension=php_exif.dll
! e: X. f7 _- C$ E9 ~1 t$ r' E8 T8 v/ m
;extension=php_fileinfo.dll
1 _: o# ^3 D% l7 ^7 P8 T
extension=php_gd2.dll
$ s0 G1 D0 ~7 A0 j
;extension=php_gettext.dll
( c1 L: W$ d3 c |
;extension=php_gmp.dll
8 v0 {! q* b- K: y
;extension=php_intl.dll
6 i7 V) ]! b; l- s4 P* }/ o1 L# ?
;extension=php_imap.dll
" F' } i# T" Z% u3 n
;extension=php_interbase.dll
/ d- i, N' s$ c( P- D" r3 p5 d
extension=php_ldap.dll
- Y4 Q7 `8 h- N/ r3 Z: P# N: B3 n( J
;extension=php_ming.dll
; ~% ^; A- X; t
;extension=php_mssql.dll
3 V$ S1 r$ @* g9 m% u- D7 ]+ h/ z
extension=php_mysql.dll
+ v' Y; J- O9 s
extension=php_mysqli.dll
8 o h; G! o l) }1 R1 @' O
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
; |3 z' L2 d5 @4 _1 F0 j
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
% n5 o K! Q- o2 R/ G
;extension=php_openssl.dll
: Q8 B$ X0 F; T. U4 _1 T9 T7 g
;extension=php_pdo_firebird.dll
# g$ S" e2 R' ]! b+ y* `
;extension=php_pdo_mssql.dll
0 p( \9 ^8 ~8 `0 w' x. a' z
;extension=php_pdo_mysql.dll
. L0 |( p7 C9 R& a7 P
;extension=php_pdo_oci.dll
$ u/ ]5 t2 k* J% h
;extension=php_pdo_odbc.dll
% u4 G* d* `6 R& F! g" K' c U$ q
;extension=php_pdo_pgsql.dll
8 b0 t) |& w, W0 i" q
;extension=php_pdo_sqlite.dll
# W4 V# P9 m- r' o
;extension=php_pgsql.dll
$ ~, o3 e5 P* x+ f* _
;extension=php_phar.dll
" [& @) Q( g) O* p% n
;extension=php_pspell.dll
, J$ A2 {- p; L0 L
;extension=php_shmop.dll
, D" N5 x0 n! }/ H6 Y
;extension=php_snmp.dll
( P0 N7 [/ `, p/ F( Y: S
;extension=php_soap.dll
; c) T3 {" r5 {( Z W
;extension=php_sockets.dll
( P% t- R" ~( U( C R
;extension=php_sqlite.dll
8 ~" B8 j( f g( ]& p/ b9 ^4 O
;extension=php_sqlite3.dll
" T! I' f7 [& [1 W4 O" g- F- |
;extension=php_sybase_ct.dll
( y0 v8 `; p% r4 G* E, P- G
;extension=php_tidy.dll
: L* q1 w3 [$ o( ?2 ?! Y+ n5 c
;extension=php_xmlrpc.dll
/ s; Q- S M8 N, @0 l
;extension=php_xsl.dll
5 y# N; w% D& [. {- }0 }0 I3 l
;extension=php_zip.dll
' k, R) O0 H% y7 O D
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
( k; }" v2 a j( {" g! U% Z! Y+ J
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,
不删除有时IIS报500错!
6 B5 f# l% ~! o$ m: N
5 Z* b, M- F M; f) v7 K
. \+ K7 E- [" l5 H2 m1 I6 _8 T
5. 配置网站
" Y$ M: q/ L4 c/ k% Q
( D* n3 O" f0 F! m% ?. s2 P2 ~
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
) i" G2 a* G! A
* M" F2 u6 C% l( }
) D: m% P3 [ a
2 ~; s: f- A7 L9 C# O! j
6 b% j5 A4 _" N
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
$ r( k E; R* Q3 I& G
9 h7 g; L; t3 c- q- i; d+ t; M
6. 写个 php 测试下吧
4 \) D$ } r- @4 a- U# o
/ M5 B6 e* }' ^- a; E; ]" o2 _
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,
这步很重要!
2 B3 Z$ r1 O) h! `, n' b. o8 s
& U' s( m d* D" `/ c- Y3 v
. a S- G2 O$ m
& Q# u& P" F: e% L$ i& u+ B* P
测试是否安装成功!
) U% C( K5 b+ X& k) p
建立一个网站,phpinfo.php文件内容为:
- F( }1 S) w r" `
文件:phpinfo.php
, R- a, t) l9 R" _6 o! t
<?php
3 R2 P1 S5 D l) t: u
phpinfo();
6 ~7 }3 L- H1 g: V
?>
: c6 `+ h" W, m8 ]
! R9 H3 T( }9 G# k# x3 t4 F
看到类似以下效果说明你的服务器可以跑 php 了。
; D) ]8 `. U9 }8 m. U
+ l F1 Z1 }5 D- ~/ ], B" [
安装过程出现小插曲,如果运行测试文件出现如下提示:
2 f, M6 D# ]5 @2 _# t+ W
先运行
X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下
错误解决方法:
0 g# A2 v. }( S, ?
错误1,
2 S5 I' U5 ~4 I# i; G
fastcgi error
$ S7 p u7 P4 u E8 Q! ^( W
the fastcgi handler was unable to process the request.
s% r; {7 G' Y# i$ S0 P6 L
--------------------------------------------------------------------------------
. w5 G" q7 W) k a8 {3 p) }
error details:
0 H: J1 x' y) s7 }% w: O0 F' g
error number: 5 (0x80070005).
. Q0 V* b4 a' m; Z [
error description: 拒绝访问。
# m+ A9 G* J9 T1 r8 G! s3 K
http error 500 - server error.
* l; J7 f3 L" Q8 p. i! }! w
internet information services (iis)
' |6 g! ^0 o0 b5 z" @; K- h
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
* m+ ?# A/ X8 [# A2 q" M( n
! _4 Q9 ^- @$ \: }' r) L) K! q
错误2,
$ u ]: r" a* O* ]) ?
FastCGI
Error
, i/ I' G3 }+ p1 U9 L
The FastCGI Handler was unable to process the request.
1 @) l* u# _/ `. O% w% e
--------------------------------------------------------------------------------
0 W5 ^" `+ F9 F Q
Error
Details:
3 F+ H" X7 t7 g2 {
Could not find entry for "php" on site 1960240566 in [Types] section.
4 N. O! y1 d: h) ?4 U% v. P
Error
Number
:
1413
(
0x80070585
).
' W5 [, d2 {$ L- P
Error
Description: ?TD§?÷òy?£
# k( g. ^/ v2 x4 R. W
HTTP
Error
500 - Server
Error
.
; h( R0 \+ E* V! g6 c& M
Internet Information Services (IIS)
@. e; q3 T; k/ N# ~1 z+ V
" _) [/ R) _7 A+ q1 y: T$ e7 W
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
# G" h; E* v2 G. E" H" x; `
错误3,
/ { h4 d: G- S* g) `7 \/ \7 D
----------
$ U' F1 H s5 p3 o
FastCGI Error
& n5 K$ t4 u) C3 _7 P! T0 h. H) I" M
The FastCGI Handler was unable to process the request.
& X4 t+ Q0 F3 k d7 C
Error Details:
) z( O8 _: @9 M
The FastCGI process exited unexpectedly
Error Number: -1073741819 (0xc0000005).
Error Description: Unknown Error
HTTP Error 500 - Server Error.
& U6 n0 }$ x7 I# p, R
Internet Information Services (IIS)
8 p9 Z0 v" r# z
--------
8 K6 Z6 ~ \& z G: c
我的PHP目录在C盘
/ o$ q0 l/ k1 f& C" E- |
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
/ y( S5 f4 L0 t/ ]8 X* B' m/ B4 d! ?
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
( g: y! i* @& Y8 U$ m
把 C:\php\php.ini 删除,搞定!
( L4 x0 A' ]: m9 L
随后用FakeCGI调试工具才搞定原因..
7 v; p+ r* Y( i) z
感谢FakeCGI,痛斥我的坏习惯!!!
6 q N; u: c' v
# m+ v" Z) j: |
+ _( o# y- T1 t% \
+ |& q2 \/ E2 F# D
+ l- h( {* ~) J5 `' Q9 Y* o: G. D
' ]" Y1 V3 u9 q: \' w8 w, Q
PHP5.3.0特除配置
- R( X# c2 R( x( J7 ~& u' \7 R3 R
一,如何正确调整上传附件大小限制?
; W" O; Y' u( }" I( d" w2 l. G. y
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:
5 f! I9 ]% f$ ?, O5 Z
1. post_max_size =10M
; x9 u) V6 z3 |
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
0 l5 S% T& j t/ y
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...
( J" ?. g8 W3 T4 K% I8 A" g5 L9 I
2.file_uploads = On
3 n. o6 E* M) c9 C2 u3 m! U
是否允许上传文件,如果为OFF您将不能上传文件.
) E3 U: Q* @1 V2 z$ ^! ]
3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
( h$ g M4 s A" q! x' Y
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
) L$ _( O- i+ q! e+ o. a! f
4.upload_max_filesize =2M
9 E/ g! P; G. v7 R1 V
最大上传文件大小,此项针对上传文件时单个文件的大小.
# X2 ?$ J/ s3 G4 J7 t
与post_max_size之间的关系:
" f+ V: w' D' j3 Z; V4 p1 H# t" ?
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
% L6 V# q* p# |0 L
修改之后一定要重启 Web 服务。
" |( K- v* M8 r0 b$ d w
注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
m5 a# d3 I- a" P: V: o$ I- y8 p
二,EXIF信息服务器配置说明:
; R$ {8 L# ?+ H& U# T5 |5 b4 ?5 U
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
" B9 f' T0 I2 P; x9 W
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前
- z( m) `! B S7 k# l: [2 z& G/ h) X
3.找到[exif]段,把下面语句的分号去掉。
! w5 C* n1 n- q: Y/ R7 ^* u
;exif.encode_unicode = ISO-8859-15
: i- E- I( ?; B6 U6 C2 N
;exif.decode_unicode_motorola = UCS-2BE
, ^1 j6 [% g( r( T& b
;exif.decode_unicode_intel = UCS-2LE
% E7 ` x5 I0 p$ N! ]: d
;exif.encode_jis =
4 B; `* |2 u4 m: T4 o
;exif.decode_jis_motorola = JIS
/ L M9 _8 F/ R: h. b* b2 d9 [ }
;exif.decode_jis_intel = JIS
+ p7 ]$ U7 J3 T; v, _3 Q
PS:
+ [: ^; ^& n( j# [3 f4 y" X: r" z
安装版PHP的方法:
" e( ?) h5 r5 I! [' Y" j
点击NEXT
$ H0 \8 ~! S$ g- X0 T4 N9 I
. i1 P) G; S. [2 G5 t: F) H2 t* @2 b
打上勾同意
- g: S9 W6 _/ j- n1 t5 g7 y
) J+ W0 F! e8 F
出现安装路径,默认路径,点击"Next"
. _$ Z+ D5 T0 M5 B+ i
2 B& F0 r; R9 o
在这里选择:IIS FastCGI,再点击Next
$ D$ B) K( G+ @: y6 F. B
# S% v$ u" ^% w, Y- \4 z
然后在模块里选上
+ o5 k/ ~6 ~/ S
mysql
# O, z, ]. V! u, X
GD2
5 Y; y8 o3 H8 m* M9 J7 W
Multibyte String
3 W/ X. Y( `/ e1 o& _+ j- [0 E
mcrypt
1 v% Y5 T0 Q( D% W! G1 t
之后点击"Next",安装成功!
2 i( b# P4 c* `- j% F" e6 ]) _
- k- w0 w/ @5 ~- Q; x
: i* A0 r& V9 Z7 @- p: l
7 S# R2 M% V7 B, P8 v
待续:
欢迎光临 航空论坛_航空翻译_民航英语翻译_飞行翻译 (http://bbs.aero.cn/)
Powered by Discuz! X2