【问题标题】:Apache ErrorDocument not working for PHP 500 errorApache ErrorDocument 不适用于 PHP 500 错误
【发布时间】:2010-02-12 14:55:35
【问题描述】:

我的 .htaccess 文件中有许多 ErrorDocuments 设置用于错误,例如 404、401、403 等,它们都重定向到我的错误页面,但是当 PHP 报告时,永远不会显示为 500 错误设置的 ErrorDocument a 500。500 代码被发送到浏览器,输出为空白。我需要做一些特别的事情来启用 500 个错误文档以与 PHP 一起使用吗?

我的指令如下所示:

ErrorDocument 401 /errorpage.php?error=401
ErrorDocument 403 /errorpage.php?error=403
ErrorDocument 404 /errorpage.php?error=404
ErrorDocument 500 /errorpage.php?error=500

我查看了 php.ini,看不到任何明显会覆盖 Apache 设置的内容,而且我的 httpd.conf 中也没有 ErrorDocument 指令。我还应该去哪里看看?

提前致谢。

【问题讨论】:

    标签: apache errordocument


    【解决方案1】:

    请参阅this 对一个非常相似的问题的回答。基本上,PHP 几乎不会触发 500。

    【讨论】:

      【解决方案2】:

      您可能需要在 Apache conf 链的前面添加 ErrorDocument 声明。如果您将其添加到 vhost conf 中,它可能不会被调用。

      【讨论】:

        【解决方案3】:

        我在使用 codeigniter 和 Imagick 时碰巧遇到了同样的问题。当出现问题时,imagick 设置了 500 HTTP 错误,在这种情况下,Codeigniter 的自定义 500 消息没有显示。

        我通过向所有 Imagick 函数添加 try-catch 解决了这个问题。检查 500 问题是从哪里出现的,然后在那里添加一个 try-catch。至于

         ErrorDocument 500 /errorpage.php?error=500
        

        ,我在网上读到的负载大致相同,有些人声称这解决了他们的类似问题,其他人说这无济于事,因为 Apache 已将控制权移交给 PHP。也许某些 php 代码将 Headers 设置为 500,这将可能会导致浏览器显示其自定义的 500 错误消息。

        【讨论】:

          【解决方案4】:

          我不相信 Apache 会让您运行 PHP 文件出现 500 个错误,因为错误页面可能会产生错误。尝试将您的 500 错误渲染为 HTML 文件,并将您的指令指向该文件。

          【讨论】:

          • 感谢您的建议,但使用 .html 文件没有区别,浏览器仍然收到 500 响应且没有内容。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-11
          • 2018-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-02
          相关资源
          最近更新 更多