在IIS6.0下安装Fastcgi+PHP来运行PHP程序(未装alpha),终于实现手工配置 IIS 6 下以 FastCGI 跑 PHP
PS:微软提升PHP在IIS下的性能 FastCGI Extension for IIS6.0% ~&d# L0 v&T1 o&D( U^j
微软已经和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 5 A( c* Z' E" t1 {. t, X
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)- B: u, q, t' H" K: S4 t# J
下载:http//www.iis.net/extensions/FastCGI,选择: x86. ?8 ~&A7 t7 i
# ? i2 s' U&f% K
或者直接下载:http//go.microsoft.com/?linkid=96556962 v$ { j7 X8 O&~
下载之后,双击运行进行安装。
(FakeCGI调试工具(备用):下载fake.zip http//blogs.iis.net/rickjames/attachment/1563148.ashx )
' @" ^! W# d' F. @# c5 [
安装后在 C:WINDOWSsystem32inetsrv 目录下产生了五个文件。如下图: Ba5 ]* v8 i% Z% b8 j2 q
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。2 p3 o- h+ q, M/ d7 q
9 A- RU( Q5 j8 `% W0 K* x- J. {
下载安装VC9运行库 即VISUAL C++ 2008
Microsoft Visual C++ 2008 Redistributable Package (x86)下载地址:
点击这里下载
2.下载 PHP5.3.0 Windows 版
由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,下载地址http//windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予
一、如何选择PHP5.3的VC9版本和VC6版本
VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。
VC9版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择VC9版本。
二、如何选择PHP5.3的Thread Safe和Non Thread Safe版本
先从字面意思上理解,Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。
再来看PHP的两种执行方式:ISAPI和FastCGI。
ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;
而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。
user读取运行权限,
选择:PHP 5.3 (5.3.0)' Z* Z0 r% I) ~! F* r4 f+ V. R' b
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
sha1: f049c806744855e4420844d47e051949fcf06661
下载 .zip 格式的版本,解压缩下载的 php-5.3.0-Win32-VC9-x86.zip 文件,并将其复制到:X:Server_Corephp目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。如下图:
+ A( b2 ^' Y6 K7 N9 ^8 _
: I" N9 {8 q: R* E' h9 j2 D
3. 注册 PHP 到 FastCGI % U3 L0 {. m1 @+ @# [
打开 C:WINDOWSsystem32inetsrvfcgiext.ini 文件。
This is the configuration file for the FastCGI handler for IIS 6.0.: O: q. R4 u+ n9 f
The FastCGI handler will look for this file in the same directory as
fcgiext.dll. By default, the FastCGI installer will place this file into
the %windir%system32inetsrv directory.
- E( a5 J3 l' R% H8 n
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
在 [Types] 下添加以下配置: `9 cv2 t9 b6 W- `y' r9 H6 H7 S
[Types]/ K. X# n9 p4 I9 e
8 b, @+ K$ f6 }c4 w
php=PHP
[PHP]
ExePath=X:Server_CorePHPphp-cgi.exe
这里要用:“”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
) U. PP N: w0 |7 D' u" f&h- e( c8 R
4. 配置 php.ini
将 X:Server_CorePHPphp.ini-production 复制一个,然后重命名为 X:Server_CorePHPphp.ini ! q4 H: N9 X) K. X9 e }( S
找到PHP安装目录下的php.ini-production并改名为php.ini文件,找到下面% n4 k. G8 ?4 N# K! P. B
[Date]7 R _* z$ ?% u' ?&t' v
Defines the default timezone used by the date functions
http//php.net/date.timezone
date.timezone =, E+ d8 |! L0 JN
更改为并去除前面的“;”:
[Date]( c% H4 u" v2 ~4 h( R4 @4 K
Defines the default timezone used by the date functions
http//php.net/date.timezone
date.timezone = Asia/Shanghai Q, @2 J ^9 t s) Q0 J
如果不改以上的date.timezone可能打开网页会提示500错误
找到6 s- j% ?# x$ F, h
On windows:
extension_dir = "ext"
改为. R- g. Z+ ~8 " D: O9 g
On windows:
extension_dir = "X:Server_CorePHPext"
9 V2 g8 k' a- V9 " T" u/ z
找到:fastcgi.impersonate = 1这句,把前面的去掉, fastcgi.impersonate = 1
如下图:
5 P5 K9 c- [ n0 J( D( n
找到:short_open_tag= Off改为
short_open_tag= On3 n2 X2 Y3 c( v) a# y6 X0 g+ {# ]
8 F0 L5 ]7 h8 w6 z. w
至于php.ini里面的extension开启方式,根据自己所需,找到:Windows Extensions 在 Windows Extensions 下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)比如我的是: 7 vk* P1 c
extension=php_bz2.dll: n+ O" R$ Z) _7 [* B( c( D. K
extension=php_curl.dll
extension=php_dba.dll' f6 Y* p3 T4 R% q- c4 ]&Z7 G
extension=php_mbstring.dll" C* _: V3 z- F% m
extension=php_exif.dll7 l4 N2 N" e&{
extension=php_fileinfo.dll7 E( X0 ~7 rC* F9 j
extension=php_gd2.dll5 x9 ^1 g8 Q5 S" B&F
extension=php_gettext.dll$ O' S. v1 i2 O$ q. H: OG
extension=php_gmp.dll
extension=php_intl.dll
extension=php_imap.dll
extension=php_interbase.dll. a! M+ _) z: _ P* @
extension=php_ldap.dll
extension=php_ming.dll
extension=php_mssql.dll3 g0 O) n8 c6 }9 M9 T7 X
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_oci8.dllUse 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.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll. K0 q3 p6 t, ^# K) i* K
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll. {&w3 O# E$ , U7 j% y$ r1 I
extension=php_pdo_sqlite.dll
extension=php_pgsql.dll$ T- g9 D&7 D3 Z+ n# S% U&M
extension=php_phar.dll
extension=php_pspell.dll
extension=php_shmop.dll
extension=php_snmp.dll. K9 m+ o) O9 @7 W @0 N
extension=php_soap.dll p&S8 Q' s+ I, F0 L5 a1 v
extension=php_sockets.dll
extension=php_sqlite.dll
extension=php_sqlite3.dll0 H5 ^$ l0 V7 g, M
extension=php_sybase_ct.dll
extension=php_tidy.dll2 m' J5 QA- T9 n
extension=php_xmlrpc.dll
extension=php_xsl.dll% h* t/ J" J) a8 t7 Q( I' n5 R9 F$ q
extension=php_zip.dll
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去(我的不行)
保存 php.ini 文件,并将其复制到 C:Windows ,并删除 X:Server_CorePHPphp.ini,不删除有时IIS报500错!
4 B0 M. ]9 U E3 d1 V
5. 配置网站q% W* / n) c' `- Y
t4 X! x( V, T! [) [2 |4 [
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图" j9 W, {" c4 S% @2 I1 x
&Q6 _: a8 g, m q/ R, R
# ^% v* ?# G6 |
可执行文件路径:C:WINDOWSsystem32inetsrvfcgiext.dll
6.相关权限配置
C:WINDOWSsystem32inetsrvfcgiext.dll 的权限,NETWORK_SERVICE和IUSR_***(Internet来宾账户)的可读和运行权限。
PHP安装目录的权限,NETWORK_SERVICE的读和运行权限
网站所在目录的权限,IUSR_***(Internet来宾账户)的读取和运行权,需要写入的目录单独再给写入权
7. 写个 php 测试下吧
" m: |: h# L' b% y}
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
( M6 w6 {! R&y ~4 F
测试是否安装成功!
建立一个网站,phpinfo.php文件内容为:/ o+ p' n$ t8 T+ O( b2 s P. P
文件:phpinfo.php
<?php
phpinfo()
?>
6 j- O: M6 | [, p/ p t
看到类似以下效果说明你的服务器可以跑 php 了。
使用FastCgi在IIS6来配置PHP 5.3运行环境。1、下载PHP 5.3.X
官方下载地址:http://windows.php.net/download/
注意,一定要下载VC9 x86 Thread Safe的,文件名形式如:php-5.3.13-Win32-VC9-x86.zip
2、下载FastCGI
官方下载地址:http://www.iis.net/extensions/fastcgi
有支持IIS6和IIS5.1的32位版本和64位版本,还有支持IIS7的,因为IIS7与IIS6差别比较大,所以对于IIS7以后再介绍吧。
3、安装FastCgi
安装FastCgi没什么可介绍的,但是有一点要注意,就是系统要先安装VC9运行库才能正常运行,否则会报“FastCGI Error 14001 (0x800736b1)”之类的错误。
所以要先安装VC9运行库(即VISUAL C++ 2008)
Microsoft Visual C++ 2008 Redistributable Package (x86)下载地址:
http://download.microsoft.com/download/5/9/e/59e74271-2b59-49a1-b955-96b69cc34f38/vcredist_x86.exe
配置FastCGI
打开FASTCGI配置文件C:\WINDOWS\system32\inetsrv\fcgiext.ini,在最后[Types]修改为这样的样式
[Types]
php=PHP
[PHP]
ExePath=D:\php\php-cgi.exe
4、开始安装PHP环境
解压php-5.3.13-Win32-VC9-x86.zip压缩包到 d:\php
找到PHP安装目录下的php.ini-production并改名为php.ini文件,也有人使用php.ini-development。
修改PHP.ini文件
找到
[Date]
Defines the default timezone used by the date functions
http://php.net/date.timezone
https://www.5wx.org
date.timezone =
更改为
[Date]
Defines the default timezone used by the date functions
http://php.net/date.timezone
date.timezone = Asia/Shanghai
找到
On windows:
extension_dir = "ext"
改为
On windows:
extension_dir = "D:\php\ext"
查找extension=php_,去掉以下几个扩展前面的分号(基本的几项)。
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_xmlrpc.dll
查找short_open_tag = Off,改成On,让其支持短标签。
增加一行(非常重要)
fastcgi.impersonate = 1
开启下面两项
cgi.fix_pathinfo=1
cgi.force_redirect = 0
5、配置IIS
然后打开IIS管理器,网站上点击右键 ->属性 ->主目录 ->配置 ->添加
扩展名:.php
可执行文件:C:\WINDOWS\system32\inetsrv\fcgiext.dll (根据自己的安装路径)
动作限制为:GET,HEAD,POST,TRACE
6、测试PHP运行
写个php测试文件
<? phpinfo()?>
能看到运行界面说明就成功了!
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)