IIS6下配置fastcgi的PHP环境

作者:美云 发布日期:2011/12/14 20:29:17 浏览次数:9412 复制

    本教程适用于采用纯净版Win2003系统的美云VPS云主机。已有PHP环境的则不需要重复配置,否则可能导致原有环境出错。

    微软去年底发布了II6的FastCGI模块,今天将服务器上的PHP支持改成了FastCGI,目前运行稳定.FastCGI的IIS模块可以让流行的应用框架在IIS上支持FastCGI协议以提供高性能和可用性的访问服务,FastCGI面向现有的网络服务器提供高性能的CGI替代标准。具体PHP安装方法我记录下来,其中包括出现的一个错误.

    环境:
    操作系统:Windows 2003 Server
    PHP版本:php-5.2.10


    1.下载FastCGI For IIS6
    http://www.xunmeinet.com/doc/fcgisetup32.rar 下载之后,双击运行进行安装.

    2.下载PHP5.25 Windows版
    http://www.xunmeinet.com/doc/php-5.2.10-Win32-VC6-x86.zip 下载.zip格式的版本,下载后解压至C:\PHP目录,并给IIS启动帐户组或用户赋予读取和运行权限。

    3.注册PHP到FastCGI
    在命令行(CMD)下进入fcgiconfig.js 默认存储目录 C:\WINDOWS\system32\inetsrv。然后运行cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe"

    4.设置
    将C:\PHP\php.ini-recommended重命名为为C:\PHP\php.ini
    打开C:\PHP\php.ini,修改:
    extension_dir = "C:\PHP\ext"
    fastcgi.impersonate = 1
    cgi.fix_pathinfo=1
    cgi.force_redirect = 0

    其它根据实际需要对php.ini进行设置修改,然后执行:
    cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:500
    cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:1000

    以上两项设置最大池和响应连接数,可以根据运行机器的硬件配置、使用情况修改。一切完毕之后重启IIS,赶紧写一个测试页试一下吧。

 

我第一次安装时,由于为了服务器的安全我删除了wsshell命令,导致在第3步时出现了如下错误:
Microsoft JScript 运行时错误: Automation 服务器不能创建对象
后通过重新注册命令:regsvr32 WSHom.ocx
问题解决

重启IIS后,打开测试页出现如下提示:

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

Error Details:

Error Number: 5 (0x80070005).
Error Description: 拒绝访问。
HTTP Error 500 - Server Error.
Internet Information Services (IIS)

这个错误是由于在解压PHP之后,没有对IIS启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.

 

The FastCGI Handler was unable to process the request.

错误信息:
FastCGI Error
The FastCGI Handler was unable to process the request.
--------------------------------------------------------------------------------

Error Details:

The FastCGI process exited unexpectedly
Error Number: -2147467259 (0x80004005).
Error Description: 未指定的错误
HTTP Error 500 - Server Error.
Internet Information Services (IIS)

解决:
检查php.ini的Dynamic Extensions内容,看是否每一行extension=xxx.dll中的dll是否真实存在,如果不存在则注释掉。

 

解决The FastCGI process exceeded configured request

IIS6+fastcgi下PHP运行超时问题解决办法;使用过程中有报错The FastCGI process exceeded configured request timeout解决办法是

FastCgi的配置文件“fcgiext.ini”,位于目录“C:\WINDOWS\system32\inetsrv”下。

在“fcgiext.ini”最末php的配置内容下增加一些参数,如下:

 

引用
[Types]
php=PHP

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

 

php Undefined index和Undefined variable的解决方法

这段时间在做项目过程中老是出现这个提示,起初是用$act来接受表单post过来的数据
$act=$_POST['act'];

用以上代码总是提示
Notice: Undefined index: act in F:\windsflybook\post.php on line 18

另外,有时还会出现

引用内容
Notice: Undefined variable: Submit ......

等一些这样的提示

原因:由于变量未定义引起的

解决方法:
1) error_reporting设置:
找到error_reporting = E_ALL
修改为error_reporting = E_ALL & ~E_NOTICE

2) register_globals设置:
找到register_globals = Off
修改为register_globals = On

PHP信息输出

<?php phpinfo(); ?>