- 注册时间
- 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 l+ W- G2 E3 J在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP
3 b# v4 {8 _& nPS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
5 `2 A1 D2 b4 L* j, D+ Z微软已经和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安装方法我记录下来,其中包括出现的错误.
! T0 ?/ m' w" K; |1.下载 FastCGI For IIS6 : i5 ~# W. u- R
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
. J7 \/ n, p4 C% Y( h. g/ j( y0 p下载:http://www.iis.net/extensions/FastCGI,选择: x86
4 k) D2 k! _' B% v% M& S- _+ s2 A2 h/ F" F1 s6 m% R/ B
+ U. n9 }7 m, \" e5 K% v) a0 p, {
, }- h2 v$ s7 `$ \ ]或者直接下载:http://go.microsoft.com/?linkid=9655696
" S9 t d8 i2 k6 J' }9 Q/ V
1 U4 s5 s, ~5 `下载之后,双击运行进行安装。
+ S: B7 v, R) ]/ g. x V* Y(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )
% E3 ]( h/ [6 I R0 s8 y3 \, B* r9 }: Q% K3 L5 P0 u
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:5 [, a0 ^- _ j/ o9 I3 B
1 A% H( i% X: i8 v5 ?
! Q+ b6 s6 a% ]
- \! Z4 M+ X8 W/ @3 `7 G同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
; }& ^) G. L' `3 F; ]
0 Y3 M' Z. b5 q$ N9 Q1 H3 G& M; r+ H % f" E& W' B; l
2 d0 o' @4 w' W' @7 v/ S: ~0 G
2.下载 PHP5.3.0 Windows 版+ n2 G! s: J$ S, M1 s3 D
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!# r1 c; `7 E; j, ?
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
" V5 t H0 W7 c. [. N4 x选择:PHP 5.3 (5.3.0)
0 c2 u) y7 ^' i IVC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
! w' f# |" s7 j1 k0 h, ?sha1: f049c806744855e4420844d47e051949fcf06661
5 L' N6 j5 x$ {下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:! D3 I: v+ n1 l/ ^5 y

2 i/ s4 C1 e/ ^+ k, T& u5 }- e" c6 V% M+ X% Y5 i2 @3 L8 S
3. 注册 PHP 到 FastCGI % v0 s2 z% h' u; s/ H8 \
5 U$ Q. a g/ t9 o" R7 q- \
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。5 Q4 ] @& X. j9 x8 [- c. [2 l
; This is the configuration file for the FastCGI handler for IIS 6.0.
- i w& U! V6 Z+ n( d" D: f; The FastCGI handler will look for this file in the same directory as
& ~( d `+ I" U. ?7 t; fcgiext.dll. By default, the FastCGI installer will place this file into
" e4 p* a% @* `/ C% i+ b& v; the %windir%\system32\inetsrv directory. 8 F' [: y7 z; ]+ _1 [
+ q- u6 H, `9 W5 H我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。 |" _* H" v, g4 p. @& Y& D
0 ]* v. w* k' u. \ U+ v- C3 Q在 [Types] 下添加以下配置:
9 k. u% ~; n" Y: f; ? G[Types] Y) k5 e! O) l- N
! t* s: o9 h' o" C% _7 d3 Z! lphp=PHP
6 v3 ]. z7 t) s$ q% W5 p[PHP]/ q9 {8 Q( |0 u9 B4 a
ExePath=X:\Server_Core\PHP\php-cgi.exe
+ m& s9 K) P$ n$ l" l: R这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
1 n4 [$ D7 u% T7 U3 _ N9 }$ I1 l+ g+ t4 A' X9 F: L
4. 配置 php.ini / ?" ~6 O8 b7 |. O! C+ a' z$ S
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini
5 S) x) [% i8 Q) e1 K找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
* ?8 X$ J, \) {) \9 ]% P0 }: Q[Date]7 V7 T( V$ ?( c! ]7 i3 j
; Defines the default timezone used by the date functions
+ ~6 m- y/ k e* d Z* G2 Q! s! D; http://php.net/date.timezone C8 K& J/ E6 ]$ r# `4 l/ o6 ?
; date.timezone =# z0 q! C0 N. m
更改为并去除前面的“;”:
$ ~* e2 k- y$ o[Date]' e% m7 `: s1 Z, Y4 L* d. \
; Defines the default timezone used by the date functions" o9 a$ q) X% _* d" e- G
; http://php.net/date.timezone
/ ]) s1 ]6 X/ } L2 Z0 idate.timezone = Asia/Shanghai
7 N1 v& w8 s: |. N/ ?8 ^如果不改以上的date.timezone可能打开网页会提示500错误- H3 S0 I- q( _ J6 w0 q
找到. \1 d5 {! c# T" r
; On windows:
: j' u& g; u- ~2 [; extension_dir = "ext"0 B+ U w% q1 U. M* J6 Z
改为
d% Z$ [+ A8 z; On windows:
8 Y9 `' B; T! G7 P4 r6 b/ g- F* Oextension_dir = "X:\Server_Core\PHP\ext"
5 M3 a5 H9 v% t# i% C* u- y5 Z- t% q5 T# o
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1
7 P: ^! G# T- T3 O) k3 g如下图:( R1 {- s) z! l; w. t2 v3 G
4 V. h; u% P9 r3 w/ D
+ V% E1 e. o2 @" E8 S/ V0 ~8 B2 X
找到:short_open_tag= Off;改为
- @ ~8 Q; Q6 @' I4 P short_open_tag= On
9 q2 ?; k; ?8 c1 u- X' Z. u6 `$ x$ _
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
+ E; D% o" B4 [+ f;extension=php_bz2.dll; r! r" F4 c2 e. \! o) F
;extension=php_curl.dll
4 d: {: i" I: @7 d0 M$ q) q, V! l+ s;extension=php_dba.dll: A% d2 H/ J! v9 |3 X- S1 I* C
extension=php_mbstring.dll1 Y2 G1 a; ~: [
extension=php_exif.dll
5 V. p- }! E. B1 s+ };extension=php_fileinfo.dll
% n5 `& L5 A# c/ c- _$ q2 b% w7 Bextension=php_gd2.dll
5 N* i1 \. c0 ~3 u* D;extension=php_gettext.dll c M- v) `8 n! j, r6 G7 w, J5 L
;extension=php_gmp.dll$ S' e; ?/ S: A$ C2 z
;extension=php_intl.dll4 A$ w% _% B6 M: h2 Z
;extension=php_imap.dll6 F1 q6 S7 j+ d$ _, A3 I2 A
;extension=php_interbase.dll
% C! l/ y2 {5 M% T, ^1 f, n$ x% @! textension=php_ldap.dll
& y4 j: Q+ R6 d0 _! S! d a;extension=php_ming.dll
* z4 z% j! Z# i;extension=php_mssql.dll
' o. b; F6 V. ]6 ]; xextension=php_mysql.dll
5 I, B. R J5 z! ]extension=php_mysqli.dll
3 u ?3 f# T! g;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client7 p- D* Q7 Y( E
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
9 u$ E4 k( u% D4 [3 M+ W;extension=php_openssl.dll
# o7 \8 q' L; J& p! f$ U;extension=php_pdo_firebird.dll7 U; Q* b" \5 R9 {
;extension=php_pdo_mssql.dll/ R1 V9 E2 D/ q* n
;extension=php_pdo_mysql.dll; R8 r0 [% L& H n* ~, j0 |
;extension=php_pdo_oci.dll
" x+ l: K8 E' f W3 {/ V;extension=php_pdo_odbc.dll8 n8 f" A$ P. l. [- t2 }, X4 x* p: E
;extension=php_pdo_pgsql.dll
2 `* J9 n. O/ Q) |* n, Y" d6 J;extension=php_pdo_sqlite.dll$ f' N5 \& Y. B
;extension=php_pgsql.dll+ W) f8 ^) @$ H* o, \" Z7 a4 y' E
;extension=php_phar.dll
" Y$ {! J* m9 ]2 ?- E;extension=php_pspell.dll9 o% M% ]9 e# c+ o
;extension=php_shmop.dll6 c8 s8 Q0 h G8 f
;extension=php_snmp.dll
7 `2 _+ p, v& @9 p; |;extension=php_soap.dll
2 U6 [8 V. r* ]9 `# M6 O6 W& M6 l;extension=php_sockets.dll6 j# S0 ?0 V# |9 K5 }3 W7 M# D$ F
;extension=php_sqlite.dll
% t8 O4 v& o3 m' c;extension=php_sqlite3.dll
" V: |' T6 m0 c, k8 ?) }8 C$ G3 T( M;extension=php_sybase_ct.dll8 d+ D: O5 O9 j9 l5 I$ a
;extension=php_tidy.dll5 F/ N* g( z& J# Z: P& }% W2 S2 P5 V
;extension=php_xmlrpc.dll
, |+ y) w: c* M1 L: q) T3 ]* ~;extension=php_xsl.dll7 w7 h$ G; k" _1 D7 W
;extension=php_zip.dll( l7 E7 T% Z. z. F4 |, |1 y
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行); ]2 w3 D8 `$ A4 ~2 o9 r4 I0 n# c
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!
; m/ \( Z* C0 a4 }
& Y5 { F) F0 T0 ], K
3 [5 J6 C6 a- t1 h5. 配置网站 6 v! l1 G$ z! O
6 r) ~" K4 U. V4 u6 P打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图8 j) R7 B$ Y5 Y- [0 l
7 @% C8 q# }- p% ~; w7 R8 Y- `$ V1 N
+ L0 O2 R9 p' H! n4 T

- u$ }9 V% n. o! |9 F( u; B% _0 _0 E% j5 u3 x
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll 0 V$ y* \$ x& \ H$ F
1 j7 ~: i4 n1 Y$ K7 t3 L, S) ~6. 写个 php 测试下吧 5 ~% ~! O, E3 w3 p
- F' s6 t8 W* V4 x5 F. |" e: R
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!) J, C8 U* D& t, B; a3 K
% M( Z! O! l+ R; q8 L( ^6 ]; m) O% M1 N0 _% m
) Q: o& L, t( x8 W- E测试是否安装成功!
$ j: w8 A2 U5 c0 @2 ]/ V建立一个网站,phpinfo.php文件内容为:" E) p/ f3 \$ U. u* M( d3 ^+ }
文件:phpinfo.php' g. y, \( }- b; I
<?php) p. m% A: w( r; E; h' ^0 [* k
phpinfo();7 s6 F9 L* }! e& g7 {4 G8 e
?> . b5 E4 y; V+ t! Q( L8 R# t
- o+ k8 B/ l6 G7 ]: H看到类似以下效果说明你的服务器可以跑 php 了。/ K" s4 H/ V) x/ d+ {
* U& C% S0 `4 F, g- D3 M
安装过程出现小插曲,如果运行测试文件出现如下提示:
6 H: H1 \: T- i+ z8 Z4 l先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:7 L8 [3 b0 Z+ k% L' A# z& n' T
错误1,) x: D4 i% ]2 I7 o
fastcgi error
- j8 _4 w: s5 C3 pthe fastcgi handler was unable to process the request.
6 s& [ ~2 l; z6 ], }--------------------------------------------------------------------------------6 \1 U4 }) f: j# S5 t3 [
error details:
+ P8 M9 x# c$ P- t p0 v# b1 K7 k: s f9 ierror number: 5 (0x80070005).
' S0 Z i0 G: merror description: 拒绝访问。 8 {/ O$ b7 Z, ^5 v
http error 500 - server error.
6 A3 S" D$ ~9 L+ v7 [2 @5 yinternet information services (iis)4 k8 l- O& J( W" I
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.- @' f* E) |5 C" f4 m: Q/ _
2 w( F+ W9 v4 K% F' p错误2,
7 d# B/ y, T: O8 Y, e5 U" m( _FastCGI Error
9 f3 A0 d4 s4 H* {) j: KThe FastCGI Handler was unable to process the request.
! D8 i" R' e/ p5 `3 t8 N--------------------------------------------------------------------------------
& l: U4 M9 ^. E% Q7 a5 [1 @- ~8 `# \Error Details:
% T* |# F0 ` `4 Y: |Could not find entry for "php" on site 1960240566 in [Types] section. 7 ^( q3 L; a& A% W+ P
Error Number: 1413 (0x80070585).
& x, p0 ~" R6 m# [- ~; DError Description: ?TD§?÷òy?£
- D( L8 U, m, e4 H9 d7 J7 h8 wHTTP Error 500 - Server Error.* C( b2 c# u( f. q
Internet Information Services (IIS)
# f* C* ^7 j; _2 k: H) Z/ j" }7 x' \& d
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!
/ A2 ]* A4 L7 C: F错误3,
& p! {" ^) v$ J& E----------
' f# j$ e: _" I4 i! kFastCGI Error ' ^ p0 r/ }$ L' A
The FastCGI Handler was unable to process the request.
3 y! H+ x0 D, EError Details:
% c/ E! X) x' Y( ^! V- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error.
( N# q A# B' c" A6 @( P# hInternet Information Services (IIS)
: u- k1 i8 E6 [' l! Y3 B1 T--------
; I+ o {5 _8 H& [" T% W0 \我的PHP目录在C盘 & _ i4 y9 x* f, a: C# B
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...6 M4 r- G" H+ g' }5 Z4 I
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。% T. f% n4 Z+ C9 _. B
把 C:\php\php.ini 删除,搞定!# H& Q# h. H& x5 i3 f, {
随后用FakeCGI调试工具才搞定原因..
% v/ A" e3 o1 z感谢FakeCGI,痛斥我的坏习惯!!!3 P4 B) H5 ~$ [! Z% J8 B8 }: n
- j6 D0 k* h4 B8 x! b9 e; Q8 h* y
. p* y9 D$ U2 k' M- ]' d
' Q$ o# ~3 H3 W, R0 ^: U
6 O$ M) I9 _! O% D
1 G9 N8 e* i: s# N
PHP5.3.0特除配置+ {8 g8 ]* p1 F4 r( Z4 M
一,如何正确调整上传附件大小限制?, {, R' ?. w$ _; P4 u
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:
$ \. y. I. M4 Q1. post_max_size =10M & E6 u0 A0 }/ q
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.3 R4 y$ }% i$ b; }
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...+ q# X- e O( p3 y
2.file_uploads = On * D0 f- B, h; q2 ^) v- R. B9 q
是否允许上传文件,如果为OFF您将不能上传文件.
; N- Y$ ]! r2 @3 N* v: p# `+ L/ O3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
3 Q9 ?# n, F' Y# i4 t ~0 M上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.7 z: Z5 i$ f+ l
4.upload_max_filesize =2M 3 @, Y" v0 r0 G; b
最大上传文件大小,此项针对上传文件时单个文件的大小.
7 U% G1 n: S$ V4 |) a5 t% I与post_max_size之间的关系:8 V: h0 S7 ?* p* g7 W% t: R* V
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个./ S Y+ F2 e: d, c. t/ [0 R4 D$ }
修改之后一定要重启 Web 服务。
`6 |. W' H* X7 B+ \注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
7 ^8 k' A1 ?% e F二,EXIF信息服务器配置说明: m4 e/ [ S+ F2 a0 A. K2 ~4 P
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号
V# k* E2 L/ ~( v/ Y7 a2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前) ^8 j# _' X9 }. B) _2 ~
3.找到[exif]段,把下面语句的分号去掉。
4 m( k( l: B% j v3 [( j;exif.encode_unicode = ISO-8859-15
" ^6 b8 n) n) W6 P;exif.decode_unicode_motorola = UCS-2BE
, O8 R8 j6 Y& ^1 M$ {8 }& }4 `;exif.decode_unicode_intel = UCS-2LE
" W4 l0 t7 A: G3 j) C! e;exif.encode_jis = $ v* n+ _5 ~7 B- u7 Y/ T8 a
;exif.decode_jis_motorola = JIS6 f7 K! N2 _1 ^" l0 T
;exif.decode_jis_intel = JIS* p& E A3 J( ?" ~# P: }
PS:
# E5 t& y7 Q6 c' R3 }# v& N安装版PHP的方法: 
& r! `$ g; |3 ?) I- y点击NEXT) L/ C0 o; ]8 V' F3 N
+ x% H8 p" x8 b7 U+ y
打上勾同意 s. u& q* Y( a |) U

: v6 F H8 p* E; Y: |% A0 d出现安装路径,默认路径,点击"Next"
+ ^- t* H: J) S5 \; R% D
: t6 B& w0 C# {' A在这里选择:IIS FastCGI,再点击Next
. l. w& f F7 W, U - r* _; Y3 R5 T L
然后在模块里选上, c$ O) h' w5 s2 Z3 s3 D
mysql
2 M- p! Z% x! V4 bGD2' K w7 {6 l' s) j
Multibyte String
+ w* I' U# m* k3 @1 h/ h, q/ qmcrypt
0 N4 L( ]8 q4 t* ?' g1 a' s; I7 q1 `之后点击"Next",安装成功!
2 \% W) g- P u, b
1 t% z: x, W/ a- I6 X2 a
2 |. S/ P4 a1 {5 N3 w8 i/ a( r- F9 F; P6 s9 e
待续: |
|