在apache中显示500错误

时间:2010-08-25 22:32:23

标签: php linux apache

  

可能重复:
  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响应?

3 个答案:

答案 0 :(得分:1)

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

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

  1. 发生致命错误
  2. 文档正文为空(Gordon找到了更改日志条目here)。
  3. 我不确定这种行为是多么可靠是长期的(即当PHP 6出现时等)。这不是一个广告宣传的功能。

    除此之外,我知道一旦脚本运行就无法激发500。我问过something similar一次404。那里提供的答案(重定向到预定义的URL,并发送500标题)可能是你能得到的最好的 - 虽然当然不会记录。

答案 1 :(得分:0)

我会说那个

ErrorDocument 500 /some/page.php
如果你想确保即使在奇怪的事情阻止PHP页面呈现时也能正确渲染,

应该可以做到这一点,或者只是一个不错的HTML页面。

要触发错误页面,请查看此anser:How to return an HTTP 500 code on any error, no matter what

答案 2 :(得分:0)

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

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

throw new Exception();