【问题标题】:IIS 7.5 PHP failure "The FastCGI process exited unexpectedly"IIS 7.5 PHP 失败“FastCGI 进程意外退出”
【发布时间】:2012-08-13 02:19:48
【问题描述】:

我一直在尝试让 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作为执行方式。

【问题讨论】:

  • 您要使用哪个版本的 PHP?

标签: php cgi iis-7.5 fastcgi


【解决方案1】:

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

[编辑 1]

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

【讨论】:

    【解决方案2】:

    您尝试访问此页面是否进行了密集的操作?

    我之前也遇到过这个问题,而且错误信息具有误导性。

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

    echo memory_get_peak_usage(true);
    

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

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

    希望有帮助!

    【讨论】:

      【解决方案3】:

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

      要修复它,我必须安装 Visual C++ Redistributable for Visual Studio 2012 Update 3

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

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

      【讨论】:

      • windows.php.net/download/#php-5.5 的左侧栏也说明了这一点,我通常会忽略它,因为我已经使用了这么多年了。
      • 从 php 5.4.x 更新到 5.5.x 的同样问题解决了这个问题!谢谢
      • 我添加了粗体以强调它是 VS 可再发行组件的 32 位 (x86) 版本。
      • 查看事件日志应用程序错误非常有帮助,它告诉我有关 MSVCR110.dll 的问题,因此表明 Visual C++ 运行时在 2012 版本(代码 110)中。
      • 澄清一下,您确实需要 x86 构建才能使其正常工作。 x64 构建不起作用,尽管它在 php 网站上说。
      【解决方案4】:

      我知道这是一个旧线程,但有人可能会节省一些头疼。

      在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 不起作用,注释掉整行即可。

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          如果您有两个应用程序,例如(您的应用程序,phpmyadmin),只需禁用 APC 扩展 希望能解决问题 它对我有用

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

          【讨论】:

            【解决方案7】:

            【讨论】:

            • 这个对我有用。我从 IIS 中的 Web 平台安装程序安装了 PHP 5.6。
            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

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

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

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

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

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

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

              希望对你有帮助。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2018-03-27
                • 2014-05-25
                • 2020-05-19
                • 2017-08-02
                • 2020-07-18
                • 2015-03-26
                • 1970-01-01
                相关资源
                最近更新 更多