【问题标题】:Display 500 error on any error in apache [duplicate]在apache中的任何错误上显示500错误[重复]
【发布时间】:2011-04-04 00:00:18
【问题描述】:

可能重复:
How to make PHP set HTTP status code to 500 automatically in case of any error condition? (including those that cannot be handled by user)

我想将 Apache 配置为在 PHP 脚本引发致命错误时向用户发送带有自定义 500 页面的 500 响应。 我现在所拥有的是它会在页面内容中打印错误,这有利于开发但不适合生产。

如何配置 Apache 以向用户发送带有自定义页面的 500 响应?

【问题讨论】:

    标签: php linux apache


    【解决方案1】:

    假设你不仅要发送500 标头(这很容易),而且真的在Apache 的系统中触发500 错误,似乎没有什么简单的解决方案。

    根据this question,它 PHP 自 PHP 5.2.4 以来的默认行为,如果:

    1. 发生致命错误并
    2. 文档正文为空(Gordon 找到了更改日志条目here)。

    我不确定这种行为是否长期可靠(即当 PHP 6 出现时等)。这不是一个广为宣传的功能。

    除此之外,我不知道一旦脚本运行就会引发 500。我曾经问过something similar 404s。那里提供的答案(重定向到预定义的 URL,并发送 500 标头)可能是您能得到的最好的答案——尽管这当然不会被记录。

    【讨论】:

      【解决方案2】:

      我会这么说

      ErrorDocument 500 /some/page.php
      

      如果你想确保它正确呈现,即使奇怪的事情阻止 PHP 页面呈现,也应该做这个技巧,或者只是一个漂亮的 HTML 页面。

      为了触发错误页面,请查看此分析器:How to return an HTTP 500 code on any error, no matter what

      【讨论】:

      • 当 PHP 脚本引发致命错误时,OP 正在寻求触发 500。
      【解决方案3】:

      我想做同样的事情,但我认为当前版本的 PHP 不可能。首先,500 errors return 200 status 存在一个错误。因此,在配置文件中设置 ErrorDocument 500 将无效。此外,即使可以重定向,似乎也无法访问错误信息(用于自定义显示和日志记录)。

      虽然触发错误很容易。只需将其添加到 PHP 文件中:

      throw new Exception();
      

      【讨论】:

        猜你喜欢
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 2021-05-04
        • 2011-12-21
        • 1970-01-01
        相关资源
        最近更新 更多