IIS 7.5 PHP故障 "FastCGI进程意外退出"

22

我一直在尝试将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文件进行了修改,并将其切换到详细模式。在C:\ inetpub \ logs \ FailedReqLogs中没有任何日志文件,其他生成的日志文件中也没有与此错误相关的日志文件。

我尝试过在此处和其他地方找到的其他修复方法,但迄今为止没有成功。

具体而言,这些方法是:

重新检查PHP.ini

设置fastCGI以与IIS一起使用(配置它以加载php.exe)

尝试使用WinCache作为执行方法。


你想使用哪个版本的PHP? - b01
10个回答

50

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

要解决这个问题,我需要安装Visual Studio 2012 Update 3的Visual C++ Redistributable

通过在控制台中运行php --version命令,我发现我的网页在升级后无法加载。然后发现我需要MSVCR110.dll,该dll包含在来自MS的32位VS redistributable更新中。由于我已关闭Windows Update中的可选更新,因此没有自动获取它。

它们还有不同的版本(32位,64位和ARM),而32位是适合我的版本。


4
这也在 http://windows.php.net/download/#php-5.5 的左侧边栏中说明了。我经常忽略它,因为我已经使用它很多年了。 - b01
从php 5.4.x升级到5.5.x时遇到了同样的问题,问题已解决!谢谢。 - Wilt
2
我加粗了以突出需要的是32位(x86)版本的VS可再发行组件。 - Håkon K. Olafsen
3
需要澄清的是,为使此功能正常工作,您确实需要x86版本的构建。尽管php网站上说x64版本可以使用,但它实际上是不能用的。 - The Cookies Dog
以上链接是VC++ Redis的64位版本。你需要32位版本,否则它将没有任何帮助。 - The Cookies Dog
显示剩余3条评论

10

这个对我有用。我在IIS中通过Web平台安装程序安装了PHP 5.6。 - jocull

4
似乎您的php中有一些dll扩展不正常,强制CGI关闭。尝试在php.ini文件中注释每个扩展并查看错误是否仍存在。
[编辑1]
经过一番努力,我发现IIS是非线程安全的Web服务器,并且所有想要在IIS中使用的php扩展都应该使用NTS lib进行编译。如果使用线程安全库编译扩展并添加到IIS中,IIS将无法启动。 在这种情况下,您的扩展是线程安全的(我猜在apache中使用),不应作为IIS的扩展添加。

3

你试图访问的页面是否执行了任何密集操作?

我以前遇到过这个问题,而且错误信息是误导性的。

你可以尝试增加该页面的内存限制。首先找出该页面的峰值内存使用情况:

echo memory_get_peak_usage(true);

然后适当设置您的内存限制:
ini_set("memory_limit","1024M");

希望这能帮到你!

1
我是一名有用的助手,可以为您翻译文本。

我知道这是一个老帖子,但可能会有人节省一些头痛。

在php.ini中更改

; Whether or not to enable the dl() function.  The dl() function does NOT work
; properly in multithreaded servers, such as IIS or Zeus, and is automatically
; disabled on them.
; http://php.net/enable-dl
enable_dl = Off

; Whether or not to enable the dl() function.  The dl() function does NOT work
; properly in multithreaded servers, such as IIS or Zeus, and is automatically
; disabled on them.
; http://php.net/enable-dl
;enable_dl = Off

将 enable_dl = Off 不起作用,注释掉整行才有效。


1
当我配置PHP 5.4.17(32位)时,遇到了这个问题。为了解决它,我需要安装Visual Studio 2012 Update 4的Visual C++ Redistributable,并且在安装此更新后它可以正常工作。

1
正如上面的答案所提到的,这与未安装或未正确安装“Visual C++ Redistributable”有关。
根据我的专业知识:
1- 首先要注意,每个PHP版本都依赖于特定的Visual C++ Redistributable版本(11、12、14等)。
因此首先要检查您的PHP版本与php网站左侧的注释: PHP下载页面 搜索“我应该选择哪个版本?”然后查看您需要的VC++版本。
2- 您必须下载VC 32位和64位,并检查您的PC是否已经安装了它们,如果是同一个版本,请卸载它们。然后先安装32位再安装64位。(除非要求,否则不需要重新启动)。
3- 完成php安装的其他步骤,如iis、apache等。
希望这能帮助到您。

1

这可能是因为所需的库不可用。从命令提示符中运行php-cgi.exe,看看它是否成功执行。如果它正在工作,应该输出一些HTML。我得到了一个通用的0xFFFFFFFF错误代码 - 这并没有什么帮助。

如果它返回错误,请在继续之前解决此问题。

我已经按照指示安装了Visual C++运行时,但次要版本比编译可执行文件使用的版本旧,启动失败。

在应用了同一运行时的较新版本后,程序正常运行。

许多其他建议都谈论了这个问题,但未提供简单的测试。请参见The FastCGI process exited unexpectedly以获取类似的问题。


0
如果您有两个应用程序(您的应用程序,phpmyadmin),请禁用APC扩展,希望能解决问题,这对我有效。
如果不行,请安装Microsoft Visual C++ 86和64位版本。

0

我有同样的问题,我通过安装适用于Visual Studio 2012的Visual C++可再发行程序32位版本来解决。64位版本对我无效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接