搭建的FastCGI

搭建的FastCGI

 

我自己搭建的FastCGI

搭建FastCGI环境,php是与IIS6配合使用的。(据说这样效率高,其实我觉得应该差不了多少的)

下载FastCGI for IIS,是在微软网站上下,问题是现在微软官网下载中心无法搜索?真可恶,只好在其他地方下载了。
2009年3月的fcgisetup32.msi
2009年3月的fcgisetup_1.5_x86_rtw.msi

下载完毕后安装即可,然后启动IIS6,可以看到,web服务扩展中有增加一个 FastCGI Handler,使用的文件在C:/WINDOWS/system32/inetsrv/fcgiext.dll
fcgiext.ini文件是它的配置文件,可以直接修改。
下载php5.3(这个版本取消了ISAPI),解压到d:/php53目录里面
配置php.ini文件(注意,5.3的ext目录中没有php_mssql.dll和php_pdo_mssql.dll,php_zip.dll,如果要使用mssql,请使用5.2版本的ISAPI方式)


3.注册PHP到FastCGI
在命令行下运行
cscript C:/WINDOWS/system32/inetsrv/fcgiconfig.js -add -section:"PHP" -extension:php -path:"D:/PHP53/php-cgi.exe"
fcgiconfig.js 默认存放目录是:C:/WINDOWS/system32/inetsrv
(注:如果已经将WScript.Shell组件反注册了,那么可能无法执行成功,会提示运行错误,服务器不能创建对象,需要重新注册c:/windows/system32/wshom.ocx)


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

其它根据实际需要对php.ini进行设置修改

然后执行:
cscript C:/WINDOWS/system32/inetsrv/fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:500
cscript C:/WINDOWS/system32/inetsrv/fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:1000

以上两项设置最大池和响应连接数,可以根据运行机器的硬件配置、使用情况修改
检查fcgiext.ini文件里面是不是这样:
[Types]
php=PHP

[PHP]
ExePath=D:/PHP53/php-cgi.exe
InstanceMaxRequests=500
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:1000


打开IIS,如果IIS中php文件名没有关联到fastCGI的话,需要手工添加(一般就加主目录中的,ISAPI筛选器不用设)
C:/WINDOWS/system32/inetsrv/fcgiext.dll
php后缀


一切完毕之后重启IIS,赶紧写一个测试页试一下吧.

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

Q1:
重启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启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.


Q2:
在写php程序中有时会出现这样的警告:PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in D:/PHPWEB/news/file.php on line 17 。这是因为PHP所取的时间是格林威治标准时间,所以和你当地的时间会有出入格林威治标准时间和北京时间大概差8个小时左右,我们可以按照下面的方法解决:

1、在页头使用date_default_timezone_set()设置我的默认时区为北京时间,即

<?php

date_default_timezone_set("PRC");

?>就可以了。

2、在php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC,同时取消这一行代码的注释,即去掉前面的分号就可以了。

Q3:
还遇到一个问题,就是运行时,页面显示空白,或者无法显示(404),请检查主目录中的php文件名映射,删除,重新添加一个默认的即可



还有一种问题,如下:

FastCGI Error
The FastCGI Handler was unable to process the request.
--------------------------------------------------------------------------------
Error Details:
Could not find entry for "php" on site 2043809562 in [Types]section.
Error Number: 1413 (0x80070585).
Error Description: 无效索引。
HTTP Error 500 - Server Error.
Internet Information Services (IIS)
这个错误我就没处理过了,后来找到了这个页面:http://forums.iis.net/t/1146956.aspx,知道原来FastCGI也有配置文件的,文件名:
C:\WINDOWS\system32\inetsrv\fcgiext.ini
我的服务器出现这个错误,是因为微软Web平台配置程序没有正确配置这个文件,正确的配置应该如下:
[Types]
php=PHP
[PHP]
ExePath=C:\Program Files\PHP\php-cgi.exe
InstanceMaxRequests=10000
ActivityTimeout=300
RequestTimeout=600
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:C:\ProgramFiles\PHP\
这样配置之后,PHP程序就可以正常运作啦!
顺便说一句,微软Web平台安装FastCGI时,会自动选择合适的PHP版本(32位或64位),不需要人工去区别了


-我按以上问题处理流程处理,问题依旧,因此我将 ExePath=C:\Program Files\PHP\php-cgi.exe 这句(我的是d:/php53/php-cgi.exe) 将 ” / “ 改成 ” \ “ 即可



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值