航空论坛_航空翻译_民航英语翻译_飞行翻译
标题:
参考资料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的完整方法
3 \( M3 X# D$ ^8 v
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以
FastCGI
跑 PHP
* e! j7 D8 l. n! }3 B0 B3 M
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
' [, x) w$ ?% B1 h
微软已经和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安装方法我记录下来,其中包括出现的错误.
( O9 x+ }8 ^: x' e h$ w
1.下载 FastCGI For IIS6
7 [0 h' G% }; A8 d
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
2 x$ q V* |& H1 L3 S, W& E& h
下载:
http://www.iis.net/extensions/FastCGI
,选择: x86
, P1 C+ w( \# X& Z) `
8 f' c$ g9 N" ?& e5 O* m4 Q
1 z4 v8 n" j- ^! |
1 I* D# v; d) V% a/ f( ]; b6 U2 R
或者直接下载:
http://go.microsoft.com/?linkid=9655696
* \. t0 K+ N3 ]# B. ]9 H
3 C* ~ H" n, B5 R
下载之后,双击运行进行安装。
9 s; U9 ~' C* {; V! }4 k; F: K
(FakeCGI调试工具(备用):下载fake.zip
http://blogs.iis.net/rickjames/attachment/1563148.ashx
)
- m* S3 a% W' ?5 v
8 l- s) R% Q2 h7 a
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:
' {* f3 Z3 ^# b0 @' p; W6 p
9 Y5 }$ R& C: \* ?. r8 B
, ~* j; d$ @8 q/ _/ c* Q' X
: w) l) O: U4 H+ H
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
8 K# I7 Q/ O/ W- h1 u) w. a
# A: ^5 J/ r& A) C& Q# E* q# Y0 q5 [
& d9 x- F+ V2 R- [! H z# Q
9 C e' j+ F1 z
2.下载 PHP5.3.0 Windows 版
: Y. \8 D$ N2 r
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
9 |+ i1 y& L7 ]- [% O0 T. m
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址
http://windows.php.net/download/
,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
$ H4 q1 [4 q4 y- |# a
选择:PHP 5.3 (5.3.0)
, \4 a( ]) b2 B% W2 A5 K% C" G
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
; i5 c9 h; B4 O
sha1: f049c806744855e4420844d47e051949fcf06661
7 w! ^. d0 }6 @" f* A
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:
/ g+ d8 B' O9 W; @' n) |* o5 [2 a
* J4 c8 |; y1 H9 A
5 \* @! N/ A3 P K
3. 注册 PHP 到 FastCGI
* l+ X' N. w2 |
* `0 W4 y) o0 u
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
0 Z! u8 j h. n7 N
; This is the configuration file for the FastCGI handler for IIS 6.0.
- Q" s |6 y/ w* [2 p |5 u7 s. E
; The FastCGI handler will look for this file in the same directory as
# L( R+ h7 o$ B- r- D: h
; fcgiext.dll. By default, the FastCGI installer will place this file into
# t# H% c: b7 m- p, ]
; the %windir%\system32\inetsrv directory.
- n3 w7 V5 K: p5 {3 _
% ?# O# b* L8 K( d
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
* H5 [6 o" |! A/ K) O& M
7 S1 w. B# P& B b& z
在 [Types] 下添加以下配置:
" Z, _4 [- ~+ ?3 l, z
[Types]
$ B1 _( Q' q% T' }1 x
+ X7 ~# W% g7 B6 G2 m3 q& Y% |
php=PHP
" j) M U, e M
[PHP]
: E+ S; e1 j' s$ |
ExePath=X:\Server_Core\PHP\php-cgi.exe
+ A; q. `" z2 ]
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
$ ?3 Y$ q9 m' L3 `6 v5 |' h0 Z: K
* j3 S7 B7 l4 F6 X6 z% v2 z* m
4. 配置 php.ini
n7 {7 P8 C. C) w" N+ }
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
2 F& ?% }% Y. i' E) ~) I0 @" Q
找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
3 i: B" a: s; @7 o+ d$ |
[Date]
- T7 b# | _1 {) d
; Defines the default timezone used by the date functions
6 s. `2 l3 m0 \+ ~! f( ^3 t# w' ]5 K
;
http://php.net/date.timezone
: l) F( } H3 ?& I. _: h# b
; date.timezone =
2 T" E) j. H6 I; { Z/ a
更改为并去除前面的“;”:
3 }+ |2 i, T1 E% X1 E* K+ y) j
[Date]
, ?! O. ?+ K( a7 q
; Defines the default timezone used by the date functions
9 C$ E+ V" M7 f+ @
;
http://php.net/date.timezone
1 h$ V1 X# ]; i& J
date.timezone = Asia/Shanghai
! ^- u7 {6 y( Z4 n4 ~
如果不改以上的date.timezone可能打开网页会提示500错误
) q3 a9 K' B. ?9 E
找到
: l6 [0 Q- N8 _
; On windows:
2 J' k$ n. V9 G. X6 `; Q1 O
; extension_dir = "ext"
, v, M# H% ]6 @
改为
$ {) y$ ^( l0 C0 T6 B! \
; On windows:
, E* x5 l" H- ?* z7 P! C, p
extension_dir = "X:\Server_Core\PHP\ext"
& U+ k; |' q; }; I9 {8 R3 G6 _
% b5 _5 ~1 l0 _- a- i# _
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
* e! @/ ~$ ?" F& t
如下图:
4 R+ ^) T- Y' j
! D; e- l$ I* l" `
u) @8 t' `- r; o7 N
找到:short_open_tag= Off;改为
7 ~8 m( x+ k2 S( w7 V' S
short_open_tag= On
% [9 u- v5 P7 Q: A$ u
* U2 d9 j5 G3 V @3 A- l" Y
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
7 a1 r' u$ z) B: ?
;extension=php_bz2.dll
h* H2 A* G2 C" p$ X/ G. P1 u
;extension=php_curl.dll
% c- u O" i. G
;extension=php_dba.dll
' I, S' a$ f. N' m% x
extension=php_mbstring.dll
5 q/ O: N. ]9 x* ^# e4 \9 R' X4 k# m# N
extension=php_exif.dll
/ A& k: c, R0 |
;extension=php_fileinfo.dll
3 ]$ I" t5 s- V/ r$ [( H
extension=php_gd2.dll
: M0 ^' ^" _0 a2 D; d+ S2 ?% a3 N) i
;extension=php_gettext.dll
6 Y: w K$ c( u, o/ c) q6 \! N
;extension=php_gmp.dll
Z2 q! h1 e. s: A5 W! o
;extension=php_intl.dll
: w* t0 D4 f, D
;extension=php_imap.dll
$ A; ]6 j1 ]# z
;extension=php_interbase.dll
- u, l7 J" [- g2 ~
extension=php_ldap.dll
# x$ { f$ p3 I1 ?8 E' B
;extension=php_ming.dll
1 |8 W" W7 m+ @- O: n9 I3 {- k9 K
;extension=php_mssql.dll
T+ ?2 q8 {7 P; o( Z
extension=php_mysql.dll
6 U0 d0 A* d4 t
extension=php_mysqli.dll
! O2 A/ f) z* {1 B% q
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
- u! f. D; w8 p* U; h# M# g5 u9 Y
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
: A9 U: c" ? ? G
;extension=php_openssl.dll
- f3 R2 ?0 W* b& m- {
;extension=php_pdo_firebird.dll
' B# L* b. b! a+ \& W% x8 g
;extension=php_pdo_mssql.dll
( G/ x* w8 ^$ X6 W- G
;extension=php_pdo_mysql.dll
8 p. i4 z8 T' ~, v) B2 y9 k, \
;extension=php_pdo_oci.dll
" l. I- Z% ~5 G) V1 R
;extension=php_pdo_odbc.dll
' c9 u, _) d8 P/ s7 o
;extension=php_pdo_pgsql.dll
& I" E' W1 X, y! D, d4 m
;extension=php_pdo_sqlite.dll
3 Y2 a) `$ q4 }- \
;extension=php_pgsql.dll
! C' n; R% Q) c7 `+ |$ w6 k7 r
;extension=php_phar.dll
" L7 C% D; k2 r! k' N+ s
;extension=php_pspell.dll
! N% ~! h# q j Z1 L$ ]
;extension=php_shmop.dll
1 n0 c/ q5 O# t3 l2 b& h
;extension=php_snmp.dll
3 D3 C+ L, a4 h3 Z1 J
;extension=php_soap.dll
' P! Z% S! @5 J. Y1 x2 t! G& _2 h
;extension=php_sockets.dll
- D5 V3 }9 d+ z# O9 N5 k6 k* F
;extension=php_sqlite.dll
0 j z8 C, e3 S3 h
;extension=php_sqlite3.dll
8 P+ @9 z# K1 \0 V& q# r* o
;extension=php_sybase_ct.dll
% E+ F" a' N7 R0 T# \
;extension=php_tidy.dll
0 P2 `; i; _4 b& |
;extension=php_xmlrpc.dll
' |& b6 [1 V) U7 M9 I$ z0 S$ Y
;extension=php_xsl.dll
5 l( J+ o. c& F6 x2 p: m% I7 X. f+ L
;extension=php_zip.dll
, w+ _- }% l' D+ `3 f& ~% J
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
$ ?# ^+ Q% d$ G8 ?1 ^) e+ \% h
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,
不删除有时IIS报500错!
* |' }# V! O( o5 x
2 v( W: Y0 m0 o, Z* V9 d- V8 q! b
( N4 Q' Q7 l9 z3 n' y% u4 v! s
5. 配置网站
: K- P) k( [& U9 }! W
$ J' p/ F, V5 w/ G7 Q* u
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图
3 T- w* x9 |0 K( J: C2 q) }- j
0 J; d9 B7 S. l M8 b
3 n; r# l5 I+ R
* H: D- A D2 i! Z0 z# H2 ?
/ k5 j( g5 [! P+ U
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
" V, I, V- m0 N9 Z
- T; O1 c; A e* O- x" @
6. 写个 php 测试下吧
( X7 h! M! \8 t
1 w) H2 P; N! l1 Q, E( S
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,
这步很重要!
# m, T! p# y4 e# U |) j! l
; h8 _6 M% \' U/ q+ O& N
8 a* C* f; Z5 B+ @5 d0 {/ J
+ x7 `* P: U9 r: T) G0 q
测试是否安装成功!
1 s& `6 Z$ X* P" S1 a3 b
建立一个网站,phpinfo.php文件内容为:
% C0 k% L9 U/ ?: T4 t) c
文件:phpinfo.php
# ], F; O' r6 j
<?php
2 l4 S) l* v, y) W+ H0 h3 p& [7 ^5 `
phpinfo();
: U, ?( U. a8 ?% Q' [9 E$ m
?>
) S4 u. X5 E0 {& D8 E* E: B$ W( P
# W* B9 H/ r7 }3 ~5 e, _; S% c
看到类似以下效果说明你的服务器可以跑 php 了。
; A( ^8 H# q' h F
2 H! u' b/ A" ]: b
安装过程出现小插曲,如果运行测试文件出现如下提示:
! L+ M) X/ G; C5 p& j
先运行
X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下
错误解决方法:
5 R( ^" {& @% O# n+ K9 r
错误1,
) Z4 C& x( D: Y2 L
fastcgi error
, G2 z& C: C2 \8 F7 G. E# C0 u" B
the fastcgi handler was unable to process the request.
8 C& w0 I( e6 V9 B1 _& S ]' L& z
--------------------------------------------------------------------------------
: n) v8 ?1 e6 l6 f, A: A& `
error details:
; s. s9 q" d0 q4 L; `
error number: 5 (0x80070005).
; e& I# k9 _0 b+ t
error description: 拒绝访问。
) n( V. T$ N' H/ U3 V9 T
http error 500 - server error.
, J" k7 z w+ v- _
internet information services (iis)
# E$ M9 _7 n0 ~* f7 E% y
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
5 u, ~" X: ~9 L0 ]
# P9 ~5 C+ o: Y9 P
错误2,
7 G5 _; p+ y. G1 o
FastCGI
Error
7 t1 V! k3 O$ C5 k8 t' e
The FastCGI Handler was unable to process the request.
/ a% R4 t( _4 J1 k) w
--------------------------------------------------------------------------------
- G( J# ]1 x* f0 H7 A4 E
Error
Details:
0 _) d" x' Q, p' ?2 B3 E; O
Could not find entry for "php" on site 1960240566 in [Types] section.
- n) w2 F! j2 B5 x7 Y
Error
Number
:
1413
(
0x80070585
).
* v c' c; {" F5 o! Q0 n; N
Error
Description: ?TD§?÷òy?£
?% m$ Z* J* K+ h
HTTP
Error
500 - Server
Error
.
2 `5 u/ v/ v" A( {; h8 v2 m; X+ M
Internet Information Services (IIS)
- Q) G+ w, H$ x
# B/ N8 e) s, Z4 P3 X4 X: S
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
4 N. N! D9 d' K$ f3 O5 x3 J
错误3,
; Z6 a$ c* E: T- Y/ i
----------
& c' x' K0 K# I2 m1 |: o B1 I
FastCGI Error
3 e6 ^0 P3 w& Q- }5 V
The FastCGI Handler was unable to process the request.
6 G7 S; ]( I6 s: {
Error Details:
% `2 {) Q( I F- u3 @' Q7 n9 B8 Y
The FastCGI process exited unexpectedly
Error Number: -1073741819 (0xc0000005).
Error Description: Unknown Error
HTTP Error 500 - Server Error.
2 s9 H, F6 s3 l
Internet Information Services (IIS)
! k9 V$ n0 C2 W) k. P+ d
--------
4 d' s9 H; M. O1 i$ ~- X
我的PHP目录在C盘
+ C* n4 M. g R9 |9 e+ E. R6 B: G8 U+ _
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
4 z& d, e, B4 J9 @4 M! r2 a
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。
1 M% C' o# ]& m2 m! }
把 C:\php\php.ini 删除,搞定!
) H9 U! K2 E& z
随后用FakeCGI调试工具才搞定原因..
- A; y, a0 z) q3 B0 g
感谢FakeCGI,痛斥我的坏习惯!!!
; a! J/ }( E) g) n
" t0 d3 `7 ?# `/ [* F+ Y: ^1 I
5 @* z. n/ {* L, }
* ], Q& }/ j0 l) j2 ]
% _$ I4 b! Y" U6 ]
, W% L: j- z/ B" a H/ X/ |& X+ n Y! t
PHP5.3.0特除配置
. U- Z* X$ I, s9 w$ S
一,如何正确调整上传附件大小限制?
2 e3 B9 H$ j% b! D5 e
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:
% s- B2 ^- P+ O' g" V, p# g3 I
1. post_max_size =10M
5 ^, e# D! O& T8 H2 W
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
$ }& B3 \1 a1 l3 ?( a- y$ _7 ?, H
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...
( |; I/ l: a3 |5 C, j' E; A; l$ c: S/ p
2.file_uploads = On
3 X' X: w1 V; ?. D) T
是否允许上传文件,如果为OFF您将不能上传文件.
n1 E1 q8 ^0 c$ ~' Z1 @) K& A3 j
3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
* t3 C7 _1 Z: `" N1 R5 J
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
5 l8 O' y# ]/ t4 k* i+ T- e/ C
4.upload_max_filesize =2M
# B. r+ p+ g$ u" P( R, [5 ^3 Z& r9 E
最大上传文件大小,此项针对上传文件时单个文件的大小.
) |4 H" H- Q6 _: g1 g8 C
与post_max_size之间的关系:
4 R; q9 M5 I. S
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
0 ?. @9 F e7 {0 ~: h) B2 }
修改之后一定要重启 Web 服务。
X0 t7 H1 y" v0 N6 D: \4 v1 }
注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
& y+ O7 c/ i1 O# l6 e- r9 j! I
二,EXIF信息服务器配置说明:
- f, U: H. |6 j! {! O
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
; T6 G- S# L$ Y- i& O9 k
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前
0 b$ \; h$ u9 \) F/ |
3.找到[exif]段,把下面语句的分号去掉。
6 G) O n$ @6 S% P
;exif.encode_unicode = ISO-8859-15
& V4 M8 u( i G' A
;exif.decode_unicode_motorola = UCS-2BE
% j+ H7 C8 h- f
;exif.decode_unicode_intel = UCS-2LE
# h3 Y; F! r: s# g* o
;exif.encode_jis =
3 h, V" d, m( T H; k; Z7 o
;exif.decode_jis_motorola = JIS
5 V% F4 H/ K5 L. R+ l Q: w; C% h) ~
;exif.decode_jis_intel = JIS
' D& c3 S$ c% j3 I' k" b
PS:
/ [ r9 P1 \4 W8 @: Y
安装版PHP的方法:
* m3 q3 l- C/ Q% V7 X# Y/ O
点击NEXT
% t" a, \( q! [
: H% M9 B7 l8 ]4 n; A- J
打上勾同意
! E& u" z8 j/ T7 C7 [7 y
/ k) ?: s+ X8 p& P. ^
出现安装路径,默认路径,点击"Next"
" ?+ N/ p* L3 |4 N1 U" x* o
: o& a% v" Z- H, @4 K. V& |
在这里选择:IIS FastCGI,再点击Next
$ t# [; a, L; {4 L O( F
$ a7 O5 O0 x( }' T* b) y2 _. O
然后在模块里选上
! H. c9 l7 |! m
mysql
* p e6 P! \. ^- T% w
GD2
6 C4 `# q% L& n% d& p
Multibyte String
* K- u( r- n7 ?
mcrypt
' Z4 w9 F! V$ x8 x1 C& o7 y: ~8 L
之后点击"Next",安装成功!
) B6 Z1 z5 U T+ B+ }! A4 }* _
5 D; M: h" B& X
- |$ A& f Z: O5 j) ?) p/ x1 Y
: {3 ?- ^" p3 O
待续:
欢迎光临 航空论坛_航空翻译_民航英语翻译_飞行翻译 (http://bbs.aero.cn/)
Powered by Discuz! X2