IIS下CGI支持PHP5

wqzbxh 2010-07-25

本来在WIndows下用Apache+php5+mysql挺好的可以装防火墙后从启系统系统出错把防火墙卸载后Apache又恢复正常可网络连接出错搞了一上午实在是弄不好决定放弃Apache用IIS来支持PHP

都知道php4都是用ISAPI来支持IIS的可到PHP5后ISAPI就不行了当时我还不知道那天弄了半天

当然以前下的php5.3-wiin-VC6用不了了VC6是Apache下的从下个PHP5.3-win-x86-vc9

准备软件:

PHP5.3.3:http://www.php.net/downloads.php

FastCGIForIIS6:http://www.iis.net/expand/fastcgi

MicrosoftVisualC++2008:

Http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=zh-cn

第1步:

安装FastCGIForIIS6

安装后在C:\WINDOWS\system32\inetsrv目录下产生了五个文件都是fgci开头的

同样

在IIS的“Web服务扩展”里多了FastCGIHandler

第2补:

解压php-5.3.3压缩包我放在D:/PHP文件里面

给PHP文件设置权限USER读取

第3步:

注册PHP到FastCGI

打开C:\WINDOWS\system32\inetsrv\fcgiext.ini文件

在[Types]下添加以下配置:

[Types]

php=PHP

[PHP]

ExePath=D:\PHP\php-cgi.exe

这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。

第4步:

复制一份php.ini-production改名为php.ini

在Windows下设置D:\php;D:\php\ext为环境变量

配置php.ini文件

fastcgi.impersonate=1

cgi.fix_pathinfo=1

cgi.force_redirect=0

display_errors=On

display_startup_errors=On

error_prepend_string=""

error_append_string=""

extension_dir="D:\php\ext\"

fastcgi.impersonate=1

date.timezone=asia/Shanghai

下面模块前的;去掉

;extension=php_curl.dll

;extension=php_gd2.dll

;extension=php_ldap.dll

;extension=php_mbstring.dll

;extension=php_exif.dll

;extension=php_mysql.dll

;extension=php_mysqli.dll

;extension=php_sockets.dll

;extension=php_xmlrpc.dll

[时区修改]

date.timezone=Asia/Shanghai

[session目录]

session.save_path="D:/PHP/tmp"

phpadmin容易报错的原因

保存php.ini

第5步:

配置网站

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

添加扩展名映射:

可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll

扩展名:.php

允许动作:GET,HRAD,POST

确定

第6步:

安装

MicrosoftVisualC++2008

不安装的话会报错ErrorNumber:14001(0x800736b1)

注:

时区问题date.timezone=asia/Shanghai

开始我后面打错了一直报500内部服务器错误

找了半天才找到原因

运行D:\PHP\PHP5\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,否则会提示错误

重启IISReset

测试

PHP.ini其他设置

1。查找:;session.save_path="/tmp"(约第1466行)

  将前面的分号注释符去掉,这里将其设置为session.save_path="D:/PHP/tmp"(这里就是我前面建立的文件夹)

2。如果你有遇到无法上传较大文件或者运行某些程序经常超时,那么可以修改以下内容来调整相关限额:

  在大约第440行,

  max_execution_time=30;这个是每个脚本运行的最长时间,根据你的需求更改数值,单位秒

  max_input_time=60;这是每个脚本可以消耗的时间,根据你的需求更改数值,单位也是秒

  大约第458行,

  memory_limit=128M;这个是脚本运行最大消耗的内存,根据你的需求更改数值,256M。

大约第732行,

post_max_size=10M

 表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.

限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...根据你的需求更改数值,M是单位:兆。

 大约第883行,

  upload_max_filesize=2M;

  上载文件的最大许可大小,根据你的需求更改数值,M是单位:兆。

在论坛发表贴子时,您post_max_size设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.

【错误解决】

错误1:

FastCGIError

TheFastCGIHandlerwasunabletoprocesstherequest.

ErrorDetails:

TheFastCGIprocessexitedunexpectedly

ErrorNumber:-2147467259(0x80004005).

ErrorDescription:未指定的错误

HTTPError500-ServerError.

InternetInformationServices(IIS)

搜索:register_globals=Off(约第705行)

  将Off更改为On,该行的注释符,即前面的分号”;”去掉,使该行在php.ini文档中起作用,即得到register_globals=On;

  注:这个对于PHP的全局变量功能,考虑有很多PHP程序需要全局变量功能所以打开,打开后请注意PHP程序的严谨性,如果不需要全局变量功能,或者出错,请保持默认Off状态。 

 

错误2:

fastcgierror

thefastcgihandlerwasunabletoprocesstherequest.

--------------------------------------------------------------------------------

errordetails:

errornumber:5(0x80070005).

errordescription:拒绝访问。

httperror500-servererror.

internetinformationservices(iis)

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

错误3:

FastCGIError

TheFastCGIHandlerwasunabletoprocesstherequest.

--------------------------------------------------------------------------------

ErrorDetails:

Couldnotfindentryfor"php"onsite1960240566in[Types]section.

ErrorNumber:1413(0x80070585).

ErrorDescription:未指定的错误

HTTPError500-ServerError.

InternetInformationServices(IIS)

即说明没有安装成功!请按照fcgiext.ini修改配置即可!!

错误4:

----------

FastCGIError

TheFastCGIHandlerwasunabletoprocesstherequest.

ErrorDetails:

•TheFastCGIprocessexitedunexpectedly

•ErrorNumber:-1073741819(0xc0000005).

•ErrorDescription:UnknownError

HTTPError500-ServerError.

InternetInformationServices(IIS)

--------

我的PHP目录在C盘

当时配置PHP.INI的时候就在那个安装目录编辑好,再复制到windows目录下的...

结果恰恰是C:\PHP\php.ini这个"备份"文件的存在干扰了FastCGI的运行,总是提示我。

把C:\php\php.ini删除,

我以前安装的apache复制了一些VC6的dll在Windows目录中需删除

相关推荐