航空论坛_航空翻译_民航英语翻译_飞行翻译
标题:
参考资料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的完整方法
! |1 F5 t% b) G" V! { u
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以
FastCGI
跑 PHP
7 s$ Z$ l) v0 Q+ Q
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
5 }, `3 J7 V5 J: ?- B! @; i- G
微软已经和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安装方法我记录下来,其中包括出现的错误.
( X$ s6 V5 B2 s5 c
1.下载 FastCGI For IIS6
- D* H' e9 `+ [* }
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
6 S; q" h% B, R$ t% |
下载:
http://www.iis.net/extensions/FastCGI
,选择: x86
8 Q/ r% L% |: @
* N1 \: L7 x) K% ?" Q" m7 o" L: g
2 E6 c) B8 k F! `! R
! ]# s1 o0 x0 D& L/ d% [2 [! z+ N: M
或者直接下载:
http://go.microsoft.com/?linkid=9655696
! |( y( R+ m1 _% q1 g# S8 G! k
& j2 H* o$ ?* |
下载之后,双击运行进行安装。
3 ~3 y; f6 u& p% R0 g5 h2 J
(FakeCGI调试工具(备用):下载fake.zip
http://blogs.iis.net/rickjames/attachment/1563148.ashx
)
# ^: D4 ^! K s) V& e0 |) Q
1 q4 i; G2 i- R9 g" G1 \
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:
5 ]. ~* C) d6 E2 I6 a p2 T/ X4 W
( |* F( ~% R% `$ n0 K/ l
3 q& d6 Q+ f6 Z
4 X( H9 r* l; u; x/ S' M
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
0 d$ N# j1 \+ P' \& N8 ?4 z
0 A+ U! D$ Q( C7 Y1 N+ P) O) k
% ]* T, |2 ?, g
0 |; h! x2 w. l# _# A5 I
2.下载 PHP5.3.0 Windows 版
& V6 L# A6 x% N1 e2 W9 W
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
" \0 F6 w! k0 A% F: W9 t6 L
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址
http://windows.php.net/download/
,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
0 O. w. ~8 s( m/ o
选择:PHP 5.3 (5.3.0)
; ]$ K9 n6 e A, D% g
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
4 S9 `2 L R u$ ^9 I; e
sha1: f049c806744855e4420844d47e051949fcf06661
5 u+ V* d: K0 @0 w8 V% p
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:
1 a3 \1 q6 e, x6 {6 z+ U: n1 U
* m: ^7 e8 j. {" p0 ~' z) Y& X: \
/ G' k+ G! y$ x5 w# o( l+ l. o% K
3. 注册 PHP 到 FastCGI
/ w+ _/ Z0 j9 |9 ?. I
9 }/ Y5 N) z+ R' r
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
1 }& T( K' v( X' k& b0 B! r
; This is the configuration file for the FastCGI handler for IIS 6.0.
+ ?$ \) z& i4 I# R9 \/ s+ j5 r q6 m6 B
; The FastCGI handler will look for this file in the same directory as
1 Q, D. T$ h* ~/ q. c
; fcgiext.dll. By default, the FastCGI installer will place this file into
# E( f2 r! A9 a+ n
; the %windir%\system32\inetsrv directory.
& L3 Y( F m/ `, U( \3 @2 ^: J
: ?: c/ w- x. X: X w& a
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
, v6 O. h# w) @7 j
& J. N9 F* M6 x) q
在 [Types] 下添加以下配置:
' ]+ C' y, F' S9 ^
[Types]
. B" Z7 L7 Y1 t" E
. _2 W0 Y5 A1 r' o0 `+ F" j
php=PHP
/ k' \ \/ M! B. |( q. _
[PHP]
! |( A' x& s6 R! c, Z l% C
ExePath=X:\Server_Core\PHP\php-cgi.exe
% H) |6 {# M! O
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
' ?. h7 _% m# X. s% I5 F2 [
+ o8 a6 H t- z- m, J% y, X
4. 配置 php.ini
% I' y4 C7 t& |) {
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
( e# J6 F v5 ~; b, e
找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
) x7 t4 S- F% T2 ?5 a6 s
[Date]
( J9 l. k; o& i/ t
; Defines the default timezone used by the date functions
8 o* w8 X, s, U }
;
http://php.net/date.timezone
/ |: }/ L5 h* n6 u- A
; date.timezone =
6 \3 w' ^1 D; c2 w
更改为并去除前面的“;”:
3 p( L- v# ?4 u( j
[Date]
, A. I# v/ s5 _! k0 a
; Defines the default timezone used by the date functions
% C& [+ W3 H! R# n& D" [9 q
;
http://php.net/date.timezone
: ?% I* N! Y- W5 a$ f
date.timezone = Asia/Shanghai
+ }4 a5 e" _& K* W x
如果不改以上的date.timezone可能打开网页会提示500错误
8 Z0 O* {/ g4 N' }
找到
: `+ b2 g& I7 z( q
; On windows:
' M5 _( a# q6 t7 A
; extension_dir = "ext"
* z* P( n+ M2 W5 a5 l# b
改为
& o" P) L4 s' @
; On windows:
1 w8 K: I& T; `8 Y, f* G
extension_dir = "X:\Server_Core\PHP\ext"
+ q* W- L9 M5 c0 p9 c7 z
, [) v+ S1 W; f) X
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
& P$ f& ?: U( j1 S U1 C: F
如下图:
R$ ]8 ^- `. G: J5 r
' Z1 I. J/ p9 z- W% }; D# U
, e/ y7 `9 c$ g4 ?! g) E
找到:short_open_tag= Off;改为
6 M, O3 _; u+ ^9 B- }
short_open_tag= On
0 {! j( f! D' ^1 r9 b, x
' U+ ]' a! a, B) W
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
. y( M5 e3 p T/ L4 m
;extension=php_bz2.dll
4 C3 ?; s, O3 K0 ~
;extension=php_curl.dll
, \: I# U1 G+ U
;extension=php_dba.dll
5 |$ l& n, @. E
extension=php_mbstring.dll
, i0 P+ Y* e7 _. s: D8 c! L
extension=php_exif.dll
6 `, i- D7 @+ y5 X+ x' ~$ ^
;extension=php_fileinfo.dll
7 G* W& |" Q4 K3 ]* F7 B: }
extension=php_gd2.dll
+ V3 ?) F+ l' i- B3 V
;extension=php_gettext.dll
& r! D# Z& J0 ^7 _& D( `2 L6 G
;extension=php_gmp.dll
3 H" W0 H' z) Z* c r; h" }
;extension=php_intl.dll
' J) m2 ~% l2 C9 Q5 U
;extension=php_imap.dll
! `+ F. _8 C# n# ~, y2 H3 x3 w
;extension=php_interbase.dll
# {6 k) i) U Z- ]; p+ X
extension=php_ldap.dll
% S T( D5 G! N
;extension=php_ming.dll
* x' o, u m. [; `
;extension=php_mssql.dll
/ r- I0 B C2 l. i
extension=php_mysql.dll
5 l( b7 E5 a4 F1 E
extension=php_mysqli.dll
6 g9 t$ o) J% R9 v6 j9 t
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
% y+ p7 @6 M* d" ?0 r
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
) A: T% T* W* r$ A; G3 a: B, B
;extension=php_openssl.dll
- @0 W* z, p3 n- \! i" M$ E
;extension=php_pdo_firebird.dll
( l) W, E# J" J* ]9 ^
;extension=php_pdo_mssql.dll
1 }" u: u( X% G7 d
;extension=php_pdo_mysql.dll
. `) h. `! F- E# }% E0 f6 I A
;extension=php_pdo_oci.dll
! W3 v" x( R( z
;extension=php_pdo_odbc.dll
2 K% ^$ E6 Y* m/ u% g: M- T
;extension=php_pdo_pgsql.dll
, M4 b& P! n; G0 ?
;extension=php_pdo_sqlite.dll
/ P0 ^& I4 h- r% {. |
;extension=php_pgsql.dll
& t# G( |. Z- i2 O
;extension=php_phar.dll
( |: K8 g& y2 d8 c3 i( s, E
;extension=php_pspell.dll
) F* O* Z" }1 r# k& A* E' E7 N
;extension=php_shmop.dll
! Y$ A9 F9 c6 T* B1 V
;extension=php_snmp.dll
5 k+ o' q+ i' U, z
;extension=php_soap.dll
& y" N ~/ U' H2 z
;extension=php_sockets.dll
, H3 V% B, v0 @, \
;extension=php_sqlite.dll
! W' k# c: c3 z, X/ T% W/ M
;extension=php_sqlite3.dll
' _, O( n+ E" g3 T( e( ?% s
;extension=php_sybase_ct.dll
% l8 e/ X2 S4 }) }6 f! { E
;extension=php_tidy.dll
$ L3 j5 ~& d8 e3 E- P; j# M
;extension=php_xmlrpc.dll
, y+ @$ U5 k9 q+ {; d4 j
;extension=php_xsl.dll
6 t+ T p' ~/ }- m
;extension=php_zip.dll
* @9 i2 _7 Y6 Q0 B- h% r T; Z! C
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
) D6 q& R: D: k2 |! n% G1 M
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,
不删除有时IIS报500错!
. k4 @7 }5 J( w0 I: I
6 y: V# [3 y+ \' s$ L
& G' ]; w4 V* { C1 ]' r" t
5. 配置网站
) j( j) Q4 _4 w
% V# y0 j* y& `% Q G+ T% Q! E
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
+ w+ A& x9 E- i5 X5 g
! l% W4 b6 N* ?: v/ E R( W4 k* j
7 w) \/ R$ v# Q9 c/ c- h
/ c$ a& _2 ^. i6 K; ]5 P9 n
" D' i1 N; Q! @3 M5 R
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
. c; v$ I, S3 q8 [9 Z# u( U3 J
, R: k! _4 ~% }4 B7 |
6. 写个 php 测试下吧
4 [$ g# |; f/ O& t; G, n
+ W9 m% J1 @& B$ u: B
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,
这步很重要!
6 }; m, f5 P6 p( Q9 }* ~. F5 f2 u
8 S. ^( |, p. V) c9 J6 I- r2 ]. }. B
( ]' C2 p8 U" t
( W6 p5 J, q) H( R, U Q7 j
测试是否安装成功!
% K# A; ]2 O0 F! Q& r
建立一个网站,phpinfo.php文件内容为:
+ m9 {+ j+ A3 l' r. E2 Z. I
文件:phpinfo.php
# d( ?+ L3 g7 f+ ^/ z7 _! |- g
<?php
0 K, H5 ?0 K4 C8 m B
phpinfo();
' j# t5 z2 y6 _8 a; v' H
?>
) V+ E9 g# a ]1 z3 e
" J% p! }/ j$ d3 M: h4 }! e
看到类似以下效果说明你的服务器可以跑 php 了。
/ h* z* C4 n. e2 l H7 T* w
5 P9 ^! ]7 x4 N: |6 ?0 q
安装过程出现小插曲,如果运行测试文件出现如下提示:
# X; F, i) [) f: |: f
先运行
X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下
错误解决方法:
$ S$ T& A, Z5 @3 c9 ~
错误1,
* n1 C3 Z' e1 s( ?: {
fastcgi error
+ R& {5 K: U$ P7 X6 C
the fastcgi handler was unable to process the request.
# O6 _* N4 f# Y" K! v* d
--------------------------------------------------------------------------------
" i3 A% N& \( E
error details:
( K! Z' w2 Y1 Y% C" I( L9 R( X
error number: 5 (0x80070005).
! x. c* [ C8 O. h; l
error description: 拒绝访问。
# C3 t/ e1 o( q$ b( F) o+ s3 ~
http error 500 - server error.
/ {6 M" b& [) Z) }: v
internet information services (iis)
+ ~+ t8 p% e) `2 w4 l# L/ H; b0 \3 I: {
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
& Y* k1 x+ X7 z/ {! `* Z
, m2 F ?: N9 ^, T
错误2,
3 W2 n. U) d- t8 T; j
FastCGI
Error
* F! X0 F" V- R4 k2 Y- R& N
The FastCGI Handler was unable to process the request.
; S8 V+ }5 A; d( L! e6 h2 U
--------------------------------------------------------------------------------
0 _9 i3 \# f) X2 D6 r
Error
Details:
! G5 S4 u; g# k; z8 g3 {
Could not find entry for "php" on site 1960240566 in [Types] section.
% P% }; t3 ^7 a$ F3 Z, M' Z' m( R' _
Error
Number
:
1413
(
0x80070585
).
$ R/ [. b( Z5 V! B+ a' k1 ^" H
Error
Description: ?TD§?÷òy?£
- ^+ m5 d( `4 M3 ?, s4 l; k/ Q0 ?
HTTP
Error
500 - Server
Error
.
* J# Z! z/ ?" W8 L- r- K( M: i
Internet Information Services (IIS)
! _# s9 j4 d* D/ i4 j! c% d
( t* m$ d4 ]$ B
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
, X! h7 k8 l9 ?& U: P+ d
错误3,
5 Y' [& J$ W9 k) E6 v- Q" R) {! a
----------
/ g4 p1 f8 g. |5 M! K
FastCGI Error
; c3 D, Q# g8 y8 L* r: l5 Y: X$ K2 }
The FastCGI Handler was unable to process the request.
% {. P: N) F" d( }4 o; J& d
Error Details:
5 z* \( F2 P9 K+ \ q: A$ q
The FastCGI process exited unexpectedly
Error Number: -1073741819 (0xc0000005).
Error Description: Unknown Error
HTTP Error 500 - Server Error.
5 _1 S& L1 f& D4 m# ^
Internet Information Services (IIS)
j/ h" ]" v2 J1 i; q4 z
--------
0 z; y) f, F( X. u- u+ l
我的PHP目录在C盘
6 Z# h4 v2 o \6 {$ |/ k
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
- V! U; d' r% j9 _2 x3 B! o* Q
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
; T9 g K$ x" ?+ @7 Z
把 C:\php\php.ini 删除,搞定!
5 b$ Q( I# E' J% D$ K& p8 S
随后用FakeCGI调试工具才搞定原因..
$ J8 i# s2 q5 q! b B( R
感谢FakeCGI,痛斥我的坏习惯!!!
6 E$ p1 f5 u# ?+ N
1 W5 l' @" V+ }$ F6 ?
8 r# \8 _) e. K! l) i
2 J+ Z, l) g. L" r
, m( t' `, w7 ^/ H) [( I6 T
) l g6 U( [+ N
PHP5.3.0特除配置
' V$ u% i' v6 \! x/ ^
一,如何正确调整上传附件大小限制?
: l1 N/ z& Y" r, l
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:
( Y' G' i) e7 q8 A
1. post_max_size =10M
* ^1 M4 g. [6 n
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
9 m" }- D+ D8 @2 k$ _. P- Z
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...
* G4 Z& ~5 s* ^: R8 l
2.file_uploads = On
/ |7 X+ a0 j g
是否允许上传文件,如果为OFF您将不能上传文件.
6 f' B2 v$ ~( J9 Y* G
3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
6 o8 ^+ ?4 w! h* [
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
4 }& T {, p+ w
4.upload_max_filesize =2M
1 w- ~5 z+ Q. o7 A% Z
最大上传文件大小,此项针对上传文件时单个文件的大小.
[6 p" k: x1 d7 \
与post_max_size之间的关系:
# ?0 F/ O5 B- g& I1 q' N F
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
0 t- H2 j$ E0 H1 Y+ e* q! ~
修改之后一定要重启 Web 服务。
6 Z- I: L) {! ^& a4 r8 B1 e+ j
注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
2 P5 `8 |0 Q. y8 n
二,EXIF信息服务器配置说明:
% e& Y. q- \8 j3 S& h
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
3 h( ^% _# V8 e: Z u% @
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前
$ X' _6 t: w0 C; y' R& P1 U* b
3.找到[exif]段,把下面语句的分号去掉。
7 {/ U" L0 k- i% E
;exif.encode_unicode = ISO-8859-15
4 A ]+ p- x* J
;exif.decode_unicode_motorola = UCS-2BE
3 L3 i: ~0 X/ C( j4 g& j
;exif.decode_unicode_intel = UCS-2LE
1 T5 L( B; t% d
;exif.encode_jis =
2 O" T! q. U1 s
;exif.decode_jis_motorola = JIS
5 e/ b/ r9 I# ~6 Z! B0 G
;exif.decode_jis_intel = JIS
5 s1 f3 U' ~$ g2 q
PS:
$ a) f5 v ~ v8 L6 S% `3 ~6 f
安装版PHP的方法:
1 g6 Q6 |" D6 z; E, \$ T# C
点击NEXT
) F. K# X# p4 c5 k, x( Z; ^
" b) t/ @8 M) @/ z _; Y! I' \% ~2 q
打上勾同意
8 l( w# X. F" z: k- v0 ^" G
' `; I) O7 R3 V
出现安装路径,默认路径,点击"Next"
" Q- E* p+ z' D. ?7 t& a( C
g l; N! N* T1 n9 l6 H
在这里选择:IIS FastCGI,再点击Next
: \/ f- H) @% q8 ~5 ^
# V5 v( {, B' @+ K* X, c0 g5 n9 f
然后在模块里选上
7 }9 f& h/ q1 C
mysql
9 K" k3 g" I0 k
GD2
) C! [' F/ N" _$ P) O3 T
Multibyte String
h. i# a/ t7 A. L. U
mcrypt
2 c2 z" {6 N. k; j1 c0 g. Y X; M
之后点击"Next",安装成功!
; U! y1 @; H* k s5 {5 v9 s
7 Q, I, L! ~( f/ s" P' ~
2 A+ Z0 f' e" d1 a! K [& }
3 Y7 {! V4 i% G4 D8 X
待续:
欢迎光临 航空论坛_航空翻译_民航英语翻译_飞行翻译 (http://bbs.aero.cn/)
Powered by Discuz! X2