实战经验:php-cgi.exe 进程意外退出-cgi文件

问题描述

碰到这么一个问题:IIS上跑PHP,已经在IIS中添加FastCGI模块映射,当IIS的应用程序池配置为DefaultAppPool时执行phpinfo()正常。但是当IIS的应用程序池配置为自己创建的AppPool时,会出现php-cgi.exe进程意外退出。

解决方法

修改c:\windows\temp目录的权限,加入IIS_USERS的写入权限就可以了。

问题原因

通过Process Monitor这个工具,可以监控系统中所有的文件操作,发现一项对c:\windows\temp目录的新建文件操作失败,原因为拒绝访问。通过加入IIS进程对此目录的写权限即可修正权限问题,进而解决此问题。

附上IIS错误页面供参考

HTTP 错误 500.0 – Internal Server Error

C:\php\php-cgi.exe – FastCGI 进程意外退出

最可能的原因:

  • IIS 收到了请求;但在处理请求过程中出现内部错误。此错误的根本原因取决于处理该请求的是哪一个模块以及出现此错误时工作进程中出现了何种情况。
  • IIS 无法访问网站或应用程序的 web.config 文件。如果 NTFS 权限设置不正确,便会出现这种情况。
  • IIS 无法处理网站或应用程序的配置。
  • 已经过身份验证的用户没有使用此 DLL 的权限。
  • 该请求将被映射到托管处理程序,但不会安装 .NET 可扩展功能。

可尝试的操作:

  • 确保 web.config 文件的 NTFS 权限正确,并允许访问 Web 服务器的计算机帐户
  • 检查事件日志中是否记录了任何附加信息。
  • 确认 DLL 的权限。
  • 如果请求被映射到托管处理程序,则安装 .NET 可扩展功能。
  • 创建跟踪规则以跟踪此 HTTP 状态代码的失败的请求。有关为失败的请求创建跟踪规则的详细信息,请单击此处。

详细错误信息:

模块

FastCgiModule

通知

ExecuteRequestHandler

处理程序

FastCGI

错误代码

0x000000ff

请求的 URL

XXX/index.php

物理路径

C:\inetpub\wwwroot\index.php

登录方法

匿名

登录用户

匿名

详细信息:

此错误表明在处理请求时出现问题。Web 服务器收到了请求,但在处理过程中出现错误,导致 500 错误。

查看详细信息 »

Microsoft 知识库文章:

  • 294807

实战经验:php-cgi.exe 进程意外退出

推荐阅读