【问题标题】:Display PHP Errors in IIS在 IIS 中显示 PHP 错误
【发布时间】:2014-12-22 18:50:01
【问题描述】:

我正在尝试使用 IIS vrs 8.5 和 PHP vrs 5.2.17 让 PHP 错误显示在屏幕上,但我继续收到 IIS 500 错误 http 页面或空白屏幕。我已经找到了许多应该修复的 SO 帖子,但它们上的任何内容都没有解决我的问题。这是我尝试过的。

  • 将 errorMode 更改为详细。仍然得到 500 错误页面而不是 php 错误。
  • 删除了“httpErrors”块下默认 IIS 配置文件中的所有自定义错误。仍然收到 IIS 自定义 500 错误页面。
  • 在默认 IIS 配置中的 httpErrors 块中添加了 existingResponse="PassThrough"。这样做会导致我得到一个空白页面,而不是 php 错误或 IIS 500 错误。
  • 我已验证站点默认 system.config 文件中没有覆盖这些设置。

目前我在屏幕上看到的是空白页而不是 IIS 500 错误。我已经验证了 display_errors 是打开的,并且 error_reporting 是正确的。我也知道 php 页面运行得很好。我故意通过删除页面上的分号来导致此 php 错误。所以我已经知道一切正常。 PHP 错误日志也可以工作,但我希望错误显示在页面上,这样我就不必每 5 分钟查看一次错误日志。

还有什么可能导致这种情况?

【问题讨论】:

  • 你为什么使用 IIS 6.2?
  • @dai 根据我的阅读,IIS 的版本特定于操作系统的版本。我现在正在运行 Windows 8.1,这就是安装的。在我看来,IIS 7 是用于 Windows Server 的。顺便说一句,这是出于本地开发目的。
  • 查看服务器错误日志以获取有关 500 的详细信息。至少了解原因可能是什么,而不是四处尝试随机的事情。
  • @Metropolis IIS 版本号与 Windows 版本号无关。 Windows 8.1 有 IIS 8.5,而不是 6.2(Windows 8.1 与 Server 2012 R2 基本相同)
  • @Metropolis IIS 管理器中显示的“帮助 > 关于”版本是 Windows 版本,而不是 IIS。当前 IIS 版本位于注册表中的 HKLM\SOFTWARE\Microsoft\InetStp\VersionString。您无法在 Windows 上升级 IIS:support.microsoft.com/kb/224609

标签: php iis


【解决方案1】:

如果您在网站和服务器的error pages 功能设置中将自定义错误设置为Detailed

AND 如果您在 php.ini 文件中设置了 display_errors = onerror_reporting = E_ALL

那么只有一种可能获得 [IIS 默认 500 错误页面] 是 “您的 PHP 因未配置而无法工作。”

所需的配置是:

Handler Mappings 设置为您的php-cgi.exe 文件(位于您的php 安装目录中)作为FastCGI 后,打开php.ini 文件并编辑以下行或添加如果没有找到在文件中。 (如果 PHP 安装目录中不存在 php.ini,则从现有的 php.ini-development 或 php.ini-production 重命名)

1) extension_dir = "ext\"

;ext文件夹会在PHP安装中,如果不创建别忘了结束\

2) log_errors = On

3)error_log = "C:\inetpub\temp\php-errors.log"

4) cgi.force_redirect = 0

;可能你需要添加这一行添加它在任何地方,例如之前';文件上传;'

5)cgi.fix_pathinfo = 1

6)fastcgi.impersonate = 1

7) fastcgi.logging = 0

 Be careful and there should not `;` before any of these lines.

documentation - installing/configuring PHP

即使配置正确,PHP 也可能由于系统损坏而无法工作。您可以通过双击 php-cgi.exephp-win.exe 来检查它应该在没有正确错误的情况下运行(除了警告或 ext/fileName... 缺少消息 - 这些都可以)。

注意:在这些许多其他设置之后需要运行 php 的所有东西(例如会话),但是通过这些简单的 PHP 将工作或 PHP 将正确显示错误的错误(不是500 页)。

【讨论】:

  • Adarsh,告诉人们如何查看 php 是否安装和配置正确的一个好方法是将一个 php 文件添加到 web 根目录,该文件包含: 并运行它。如果在 IIS Web 主机上正确设置了 php,您将获得 php 信息页面。
【解决方案2】:

确保您正在编辑正确的 php.ini 文件。要检查需要编辑的文件,请转到 IIS > 处理程序映射并查找 PHP。然后检查它们位于哪个目录。

在我的例子中,我有两个目录并且正在编辑错误的 php.ini 文件,这就是我无法显示错误的原因。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,得到 500 错误而不是 PHP 错误。我通过转到 IIS 中的 PHP 管理器解决了这个问题

    在 PHP 设置下单击配置错误报告。这将允许您在开发机器和生产机器之间进行选择。如果您选择生产,您将不会在浏览器中看到详细的 PHP 错误,您只会被写入日志文件。开发将允许显示两个错误并将其写入日志文件。

    我希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      在服务器配置功能视图下,您会看到 fast-cgi 设置, 双击它。你会看到 php-cgi.exe。双击它。将标准错误模式设置为 IgnoreAndReturn200。

      问候

      【讨论】:

        【解决方案5】:

        我一直在努力解决这个问题 - 我的 PHP 处理程序映射设置如下,确认我使用的是 PHP 5.3:

        于是我就去对应的位置找到了正确的文件,这里是:C:\Program Files (x86)\PHP\v5.3并编辑了php.ini

        起初看起来像这样:

        ; error_reporting
        ;   Default Value: E_ALL & ~E_NOTICE
        ;   Development Value: E_ALL | E_STRICT
        ;   Production Value: E_ALL & ~E_DEPRECATED
        

        我改成这样了:

        error_reporting(E_ALL);
        ;   Default Value: E_ALL & ~E_NOTICE
        ;   Development Value: E_ALL | E_STRICT
        ;   Production Value: E_ALL & ~E_DEPRECATED
        

        我必须在 IIS 中重新启动服务器以应用更改(从左侧顶部的列表中选择服务器,而不是选择左侧下方的站点):

        现在我看到错误消息 - 例如

        解析错误:语法错误,第 2 行 C:\data\test.php 中出现意外的“=”

        而不是这种类型的一般错误 - 例如在 Chrome 上:

        【讨论】:

          【解决方案6】:

          如果您在激活 php 时出现错误 500 以显示错误,可能您需要关闭跟踪错误 按照步骤一步一步修复。

          如果您没有下载 PHP Manager for IIS,您可以在 Web Platform Installer 中找到它。然后打开它。

          然后点击管理所有设置

          现在只需关闭此设置

          【讨论】:

            猜你喜欢
            • 2011-06-28
            • 1970-01-01
            • 2011-09-28
            • 2016-08-09
            • 2012-11-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多