IIS 7.5 PHP失败"FastCGI进程意外退出"

Vil*_*lid 22 php cgi fastcgi iis-7.5

我一直试图让PHP使用IIS 7.5并且遇到了一些障碍.每当我尝试加载页面时,我都会收到以下错误:

"HTTP错误500.0 - 内部服务器错误C:\ Program Files\PHP\php.exe - FastCGI进程意外退出"

模块FastCgiModule

通知ExecuteRequestHandler

处理程序PHP_via_FastCGI

错误代码0x00000000

请求的URL*http:// localhost:80/index.php

物理路径C:\ inetpub\wwwroot\index.php

登录方法匿名

登录用户匿名

请求跟踪失败日志目录C:\ inetpub\logs\FailedReqLogFiles

我根据需要修改了PHP.ini文件以用于IIS,并且还将其切换到详细模式.C:\ inetpub\logs\FailedReqLogs中没有任何日志文件,并且在生成的其他日志文件中没有与此错误相关的日志文件.

我已经尝试过我在这里和其他地方找到的其他修复程序但到目前为止没有任何成功.

这些是:重新检查PHP.ini设置fastCGI以在IIS中使用PHP(配置它以加载php.exe)尝试使用WinCache作为执行方法.

b01*_*b01 49

当我将PHP 5.4.14升级到5.5.3(32位)时,我遇到了这个问题.

为了解决这个问题,我必须为Visual Studio 2012 Update 3安装Visual C++ Redistributable

当我的网页在升级后不再加载时,我发现我需要通过从控制台运行php --version来获取此DLL.然后,我发现我需要MSVCR110.dll,它附带来自MS的32位VS可再发行更新.由于我在Window Update中关闭了可选更新,因此我没有自动获取.

它们也有不同的风格(32位,64位和ARM)32位对我有用.

  • 这也在http://windows.php.net/download/#php-5.5的左侧栏中说明,我通常忽略了这一点,现在我已经使用了很多年了. (4认同)
  • 只是为了澄清一下,你真的需要x86构建才能工作.x64版本不起作用,尽管它在php网站上说的. (3认同)
  • 我添加了粗体以突出显示它是需要的VS可再发行组件的32位(x86)版本. (2认同)

A23*_*577 4

您的 php 中似乎有一些 dll 扩展无法正常工作并强制 CGI 关闭。尝试注释掉php.ini文件中的每个扩展,看看是否会出现错误。

[编辑1]

经过一番努力,我发现 IIS 是非线程安全的 Web 服务器,并且您想要在 IIS 的 php 中使用的所有扩展都应该使用 nts lib 进行编译。如果扩展使用线程安全库进行编译并添加到 IIS,则 IIS 将不会启动。在这种情况下,您的扩展是线程安全的(我猜是在 apache 中使用的),并且不应该添加为 IIS 中的扩展