IIS上安装PHP5.3的完整教程方法

由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!

新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,现在给出在IIS上安装PHP5.3以后版本的教程
首先下载并安装IIS FastCGI,下载地址http://www.iis.net/1521/ItemPermalink.ashx
下载IIS下的PHP,下载地址
http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,找到PHP安装目录下的php.ini-development并改名为php.ini文件,找到下面
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
; date.timezone =
更改为
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai

如果不改以上的date.timezone可能打开网页会提示500错误

找到

; On windows:
; extension_dir = "ext"

改为

; On windows:
extension_dir = "E:\local\php5.3\ext"

目录根据自己情况定

至于php.ini里面的extension开启方式,根据自己所需,比如我的是

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_exif.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_ming.dll
;extension=php_mssql.dll
extension=php_mysql.dll
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.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_phar.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll

注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从PHP5.2中拷贝过去

然后打开IIS管理器,网站上点右键-属性-主目录-配置-添加,配置如下图

 


打开FASTCGI配置文件C:\WINDOWS\system32\inetsrv\fcgiext.ini,在最后[Types]修改为这样的样式
 

[Types]
php=PHP

[PHP]
ExePath=C:\PHP\php-cgi.exe
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=500
ActivityTimeout=900


重启即可,还有不要忘记给默认文档加个PHP哦

 

 

 

 

  1、CGI(通用网关接口/Common Gateway Interface)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。这样,当用 户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。

  2、ISAPI(Internet Server Application Program Interface)是微软提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接 口。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的 用户输入。此外,ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。

  在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的“WEB服务扩展”中,添加一个新的WEB服务扩展,程序后缀为 PHP,ISAPI程序为php5isapi.dll,然后再“环境变量”-“系统变量”中增加变量名PHPRC,数值为php.ini的路径,在 Internet信息服务管理器中,选择网站或应用程序的根目录,打开目录属性页(右键选择“属性”),再选择“主目录”。点击“配置”按钮,选择“映 射”Tab页。点击“添加...”,在“可执行文件”设为: c:\php\php5isapi.dll,扩展名设为.php,选择“确认文件是否存在”,然后“确定”保存设置。重启服务器即可完成PHP的配置。

  3、FastCGI是可伸缩架构的CGI开放扩展,其主要行为是将CGI解释 器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI 进程管理器调度,则可以提供良好的性能、伸缩性等。

  FastCGI已经集成于IIS7,也支持IIS6,在IIS6中的安装方法可参见微软的官方文档,我这里简单翻译一下。

  先点这里下载一个32位的FastCGI extension for IIS,然后将其安装,安装后的文件应该放到system32\inetsrv目录下。

  之后打开system32\inetsrv目录,执行下面的语句,其中c:\php为你的PHP目录,可以修改为其他数值。

  cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"c:\php\php-cgi.exe"

  在Internet信息服务管理器中,选择网站或应用程序的根目录,打开目录 属性页(右键选择“属性”),再选择“主目录”。点击“配置”按钮,选择“映射”Tab页。点击“添加...”,在“可执行文件”设为: c:\windows\system32\inetsrv\fcgiext.dll,扩展名设为.php,选择“确认文件是否存在”,然后“确定”保存设 置。

  修改php.ini文件,增加如下语句:

  fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
cgi.force_redirect = 0

  之后打开system32\inetsrv目录,执行以下语句:

  cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000
cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

  最后,配置c:\php目录的安全性,使得IIS_WPG组对于这个目录有读取和执行的权限。

  这时候,基于FastCGI的PHP就成功配置到IIS6上了。

  不过根据我自己的测试,FastCGI的性能比ISAPI的好像高不了多少,不知道Windows Server 2008下的IIS7是不是会好一些。这里是微软提供的基于内置FastCGI的IIS7安装PHP的方法。

 

  在Windows IIS 6.0下配置PHP,通常有CGI、ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异。

 

刚配了一台服务器,装完IIS后下了个最新版的PHP,但发现PHP好象是自5.3以后不再支持IIS的ISAPI扩展了,查了一下,似乎只支持FastCGI。FastCGI对我来说还是个新玩艺儿,放狗一搜,似乎也没什么复杂的,于是下载、安装……一切顺利!

等到配置PHP时遇到麻烦了,照网上主流的说法配完后总是报如下错误:

 

FastCGI Error
The FastCGI Handler was unable to process the request.
--------------------------------------------------------------------------------

Error Details:

•Error Number: 14001 (0x800736b1).
•Error Description: 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
HTTP Error 500 - Server Error.
Internet Information Services (IIS)

 

 无奈之下到网上一通狂搜,把找到的办法挨个儿拿来试,结果个个不行。可怜我的新装的服务器,因为做了Raid而不能做Ghost,只好记录每一步的操作,试完不行再按笔记一步步的倒着改回去…… 苦啊~~(-_-!!!)

从下午4:30一直折腾到晚上11:30愣是没搞定,一怒之下也不管什么了,决定下载PHP的安装版(之前一直用的是免安装的ZIP压缩版,解压后 手工配置),下完后SetUP,选择了几个简单选项后重启还是报错,说时区设置不正确,这个倒是好说,在php.ini中设置 “date.timezone = Asia/Shanghai”后刷新,搞定~~

郁闷,学教训了,以后不要动不动就要ZIP版全手工配置,其实拿安装版来配的话,几分钟就轻松搞定的……

FastCGI官方(MS)下载
PHP 官方下载




文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.