HP5.3.0篇:IIS6上安装MySQL5.1.38,PHP5.3,Zend3.3,phpMyAdmin3.2.2的完整方法
在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0
微软已经和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.下载 FastCGI For IIS6
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)( M3 h# K" b" }8 c1 ^
下载:http://www.iis.net/extensions/FastCGI,选择: x86
或者直接下载:http://go.microsoft.com/?linkid=9655696
下载之后,双击运行进行安装。8 k9 R5 ^$ S8 D! j7 z" w7 `8 b
(FakeCGI调试工具(备用):下载fake.zip http://blogs.iis.net/rickjames/attachment/1563148.ashx )4 s# T: ~* F3 W% U' r5 C
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。如下图:9 e0 G9 a7 {: C% Z+ N
! ]: }# J% W& K9 s4 i* Q
/ d9 I1 }9 q: D
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。% b& S2 y# z ?! v2 ^+ Y
+ S1 W, G! r2 C2 ^
( s9 ~" B' u+ x6 K+ n3 r4 Y4 Z/ |' O
2.下载 PHP5.3.0 Windows 版5 m: Y7 M, J4 n/ A
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,; d. |; k r0 ], v; r7 e
选择:PHP 5.3 (5.3.0)' U% d9 ~; n2 @
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
sha1: f049c806744855e4420844d47e051949fcf06661# {. c. s* S$ ~; v g+ ^9 T) T! U
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:\Server_Core\php目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:+ l, f8 A; C, b( M% }9 v5 A
0 X6 b! ~* C: b
8 O. I$ H2 M* ^. K4 i2 M
3. 注册 PHP 到 FastCGI
. B8 C ~ v, z8 c9 Z" X
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。5 W8 p: e I" E. Q
; This is the configuration file for the FastCGI handler for IIS 6.0.
; The FastCGI handler will look for this file in the same directory as0 p! u% `- ? f n; k8 g
; fcgiext.dll. By default, the FastCGI installer will place this file into
; the %windir%\system32\inetsrv directory.
6 p5 `; J% ?3 g% I- ]$ S$ y
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
在 [Types] 下添加以下配置: , w7 h& \( K& t8 b* o
[Types]
. }6 X+ Z; r, c# P; |
php=PHP
[PHP]) l: r( ], ^# [6 X
ExePath=X:\Server_Core\PHP\php-cgi.exe
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
4. 配置 php.ini 8 ^, n7 L4 Z5 r
将 X:\Server_Core\PHP\php.ini-development 复制一个,然后重命名为 X:\Server_Core\PHP\php.ini ( n5 a; `' Z% }
找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
[Date]: o+ b8 w; M! t5 o& D2 P* I$ X
; Defines the default timezone used by the date functions8 ?" N. y$ b6 S/ i
; http://php.net/date.timezone- U, P. M4 E; f" C. `4 O
; date.timezone =
更改为并去除前面的“;”:
[Date]
; Defines the default timezone used by the date functions& E5 D+ C# y2 b! o" t3 _0 F8 E3 `
; http://php.net/date.timezone. ?) t- m4 Y+ j9 e
date.timezone = Asia/Shanghai
如果不改以上的date.timezone可能打开网页会提示500错误" a- a5 G7 C! E2 ?
找到
; On windows:* U1 L" d8 ~9 P3 d, {5 i! C
; extension_dir = "ext"/ O) T+ @; [& d5 _; X* T* S8 S
改为% u( Z3 _* S$ m4 t
; On windows:, Q% l* D6 ~9 Z
extension_dir = "X:\Server_Core\PHP\ext"
找到:fastcgi.impersonate = 1;这句,把前面的;去掉, fastcgi.impersonate = 1 ( o q9 T1 q# K J5 f
如下图:
$ N0 y" V5 x/ l
找到:short_open_tag= Off;改为1 [ W! d. J; q7 P3 V; F
short_open_tag= On* |, Y! p2 _9 U7 B
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是
;extension=php_bz2.dll& y4 ?/ o0 H& h' a% G; }
;extension=php_curl.dll
;extension=php_dba.dll
extension=php_mbstring.dll' C6 K; Z- j8 S2 f9 ~; C0 P
extension=php_exif.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll) U* o: r5 m# p' y2 ]1 p2 s
;extension=php_gettext.dll) g. V D- N, M" C8 P1 ^$ x
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
extension=php_ldap.dll
;extension=php_ming.dll
;extension=php_mssql.dll
extension=php_mysql.dll6 Q( p+ k3 S1 \/ A; k
extension=php_mysqli.dll
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll8 m. A& A4 |$ Z. ^& h5 a# f
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll2 R9 n% j- _5 g3 Z3 ~5 d
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll( l; W7 X k! Q: m; M. Y
;extension=php_pgsql.dll
;extension=php_phar.dll
;extension=php_pspell.dll
;extension=php_shmop.dll- x" `- _& U& u# s& l
;extension=php_snmp.dll
;extension=php_soap.dll5 b& Q' y5 g Q# c0 n7 j
;extension=php_sockets.dll2 e) E( X" F) z; ]4 Y% q
;extension=php_sqlite.dll
;extension=php_sqlite3.dll B( _- Z: s; f8 c- \
;extension=php_sybase_ct.dll' E2 F M5 M6 r2 q
;extension=php_tidy.dll
;extension=php_xmlrpc.dll# C; t' a B$ J( C& a3 c4 p* `
;extension=php_xsl.dll3 Z& K, S$ `) h0 _( n9 w
;extension=php_zip.dll2 R3 p* C! Z- }& l& c
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
保存 php.ini 文件,并将其复制到 C:\Windows\ ,并删除 X:\Server_Core\PHP\php.ini,不删除有时IIS报500错!, n6 o. Z8 y) \* v1 M6 R2 `
' h5 a0 ]6 X) k1 f, ^
5. 配置网站
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图9 _" ~0 O$ j# v8 P1 k2 n
$ A' P$ z; y7 k( E& |( P
. H. {) v2 r/ n- h
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
6. 写个 php 测试下吧 w' t6 H& W( R: U' I
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!) ]; w/ l, H* K
, p( q$ c V8 V% b2 X1 M' x& Y
+ M0 j/ m7 J% `) U
测试是否安装成功!
建立一个网站,phpinfo.php文件内容为:" j/ V* w! h% c0 N' m9 R$ V9 j) w& s
文件:phpinfo.php
<?php0 u" Y6 T0 n5 g/ E- f5 t& p/ @
phpinfo();
?> 4 g! A l$ L$ `
- a! i j( N+ V" R# i2 Q
看到类似以下效果说明你的服务器可以跑 php 了。
- @4 N- u. I1 ? O* l( H0 b
安装过程出现小插曲,如果运行测试文件出现如下提示:; a% J' s- c* u9 u& i; O$ L
先运行X:\Server_Core\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,再找以下错误解决方法:! \6 |( B* m" e- s# G3 \/ ]
错误1,8 `0 i+ j1 g6 N% z w
fastcgi error ~. n! R1 {2 l- o) v* c+ v
the fastcgi handler was unable to process the request.
--------------------------------------------------------------------------------
error details:( m" m& o& Y- z- G7 f( c. i: n: Z
error number: 5 (0x80070005).
error description: 拒绝访问。 + ^0 c3 \5 n( D! ]. f
http error 500 - server error.
internet information services (iis)" ~$ V# P7 K2 i
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
5 _7 V$ e9 d3 P7 C' T
错误2,% ^* }. u3 s. l+ L2 i' a. {
FastCGI Error! W# ^5 P9 c/ \) U- _! x
The FastCGI Handler was unable to process the request.
--------------------------------------------------------------------------------" s% v: S, v: B& ?, A( ]
Error Details:
Could not find entry for "php" on site 1960240566 in [Types] section. 1 D- M/ R5 ^( E! M. Z* j$ f* O
Error Number: 1413 (0x80070585).
Error Description: ?TD§?÷òy?£ 5 P& X; K7 `( c$ O5 G
HTTP Error 500 - Server Error.; h4 H% ~7 r( v/ m4 W5 X# c
Internet Information Services (IIS) 9 a4 _8 }. q# c: W/ [) [* A
即说明没有安装成功!请按照fcgiext.ini 修改配置即可!!# x' I2 ]- D* t5 y; c8 Y
错误3,1 I, B' [" m$ O% s% u
----------
FastCGI Error
The FastCGI Handler was unable to process the request. a4 M# @+ I$ B9 e7 K
Error Details:
- The FastCGI process exited unexpectedly
- Error Number: -1073741819 (0xc0000005).
- Error Description: Unknown Error
HTTP Error 500 - Server Error. c5 j3 P" Z; ]+ k3 W
Internet Information Services (IIS)
--------
我的PHP目录在C盘 1 \6 U3 G* B/ G# H; i& X9 g
当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...
结果恰恰是C:\PHP\php.ini 这个"备份"文件的存在 干扰了FastCGI的运行,总是提示我。$ Y# w. f7 b/ I7 b! U8 a
把 C:\php\php.ini 删除,搞定!5 z9 _$ p9 o4 y7 M! z( u
随后用FakeCGI调试工具才搞定原因..# Z8 w# O' w' Q, }5 ^3 V+ s
感谢FakeCGI,痛斥我的坏习惯!!!
, |4 H! c* R; R6 o/ _/ }
& B! w! ^2 Q9 o" B* Z" H
PHP5.3.0特除配置
一,如何正确调整上传附件大小限制?; F( Y& v& y: ]+ Q* y! R" ]
修改 php.ini (Windows 系统在 C:/Windows/system32 下)中的下面几项:7 P; \4 w. j# Z( R- I* f
1. post_max_size =10M ; y0 n: O. U/ ]# R# ~6 T
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...' F6 Z7 k4 W9 K" e! Q2 a
2.file_uploads = On
是否允许上传文件,如果为OFF您将不能上传文件./ B! Y' n; ?+ [$ [3 W: [. z; a2 T
3.upload_tmp_dir = "C:\Server_Core\php\upload_tmp\"
上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.
4.upload_max_filesize =2M 5 ^# O; U- m# l8 D7 k7 I
最大上传文件大小,此项针对上传文件时单个文件的大小.+ `7 l! c( j- }# r* D6 N- O) e
与post_max_size之间的关系:
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.0 n6 ]1 s" G& x5 A- @9 \
修改之后一定要重启 Web 服务。1 _+ P! e3 ^* g5 b8 T- |2 i4 a
注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.
二,EXIF信息服务器配置说明:
1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号( d5 ], N& k* o9 Y f
2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前( P& X6 ]; I2 d1 y4 U U
3.找到[exif]段,把下面语句的分号去掉。 f8 Q' P$ _8 h' q9 q
;exif.encode_unicode = ISO-8859-15
;exif.decode_unicode_motorola = UCS-2BE% r5 p! Z, }: c6 `8 P8 b
;exif.decode_unicode_intel = UCS-2LE
;exif.encode_jis = % F0 C- O8 ~( V+ `
;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel = JIS* V9 Y, w$ o: l7 T8 V
PS:$ q( o3 V! x$ U+ |, M4 ^
安装版PHP的方法: : y* |6 L+ Q7 Y
点击NEXT+ G, Y( }2 r& l _7 L: n
打上勾同意9 }& E4 c3 W6 X
, j; l+ g' n$ [: |
出现安装路径,默认路径,点击"Next"
在这里选择:IIS FastCGI,再点击Next$ ^) q2 o! T- j9 W0 X. Q& s
$ D4 j- O/ U) s; H4 m9 ?
然后在模块里选上
mysql
GD2
Multibyte String" Y: G0 p4 T" v4 J' V
mcrypt9 Z* ~, H4 f# z. u9 E7 z# ~
之后点击"Next",安装成功!