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

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

我已经尝试了在这里和其他地方找到的其他修复程序,但到目前为止还没有成功。

在一些细节上,这些是: 重新检查 PHP.ini 设置 fastCGI 以在 IIS 中与 PHP 一起工作(将其配置为加载 php.exe) 尝试将 WinCache 作为执行方法。

4

9 回答 9

50

当我将 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 位对我有用。

于 2013-09-02T16:31:12.390 回答
10

为 Visual Studio 2012 Update 4安装 32 位Visual C++ Redistributable

不是 64 位

于 2015-08-06T11:55:09.450 回答
4

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

[编辑 1]

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

于 2013-01-01T05:41:54.400 回答
3

这个页面是你试图做的任何密集的事情吗?

我以前遇到过这个问题,并且错误消息具有误导性。

您可能想尝试增加该特定页面的内存限制。首先找出该页面的峰值内存使用量:

echo memory_get_peak_usage(true);

然后适当地设置你的内存限制:

ini_set("memory_limit","1024M");

希望有帮助!

于 2013-04-18T13:54:15.773 回答
1

我在配置时遇到了这个问题PHP 5.4.17(32-bit)

要修复它,我必须安装Visual C++ RedistributableforVisual Studio 2012 Update 4并且在安装此更新后它运行良好。

于 2014-09-17T15:23:28.917 回答
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 不起作用,注释掉整行。

于 2013-11-08T19:44:42.717 回答
1

正如上面答案中正确提到的,它与未安装或未正确安装的“Visual C++ Redistributable”有关。

取决于我在这个问题上的专业知识。

1- 首先注意,每个 PHP 版本都依赖于特定的 Visual C++ Redistributable 版本(11、12、14、..)

所以首先是使用 php 站点左侧的注释检查您的 PHP 版本:
PHP 下载页面 搜索“我选择哪个版本?” 然后看看你需要什么版本的 VC++。

2- 您必须同时下载 VC 32 和 64。并检查您的 PC 是否已经安装了它们(仅适用于相同版本)。然后先安装32,后安装64。(除非它要求,否则不需要任何重新启动)。

3- 完成 iis、apache 或 .... 的 php 安装其他步骤

我希望它对你有帮助。

于 2017-05-04T08:47:45.690 回答
0

如果您有两个像(您的应用程序,phpmyadmin)这样的应用程序,只需禁用 APC 扩展希望能解决它与我一起工作的问题

如果不只是安装 Microsoft Visual C++ 86 和 64

于 2015-03-23T10:36:12.607 回答
0

我有同样的问题,我通过安装32位 Visual C++ 解决了这个问题,可再发行 Visual Studio 2012。64 位对我不起作用。

于 2015-09-01T19:49:04.987 回答