2010-08-25 86 views
2

可能重复:
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)显示500错误的任何错误

我想配置Apache发送给用户提供了一个自定义的500页面时,PHP 500响应脚本引发了一个致命的错误。 我现在所拥有的是它将打印错误内联的页面内容,这对开发很有好处,但不适合生产。

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

回答

1

假设你不仅要发送500头(很简单),但真正引发Apache的系统中的500错误似乎没有微不足道的解决方案。

this question,它是因为PHP 5.2.4如果 PHP的默认行为:

  1. 出现致命错误和
  2. 文档正文为空(戈登发现changelog的项目here)。

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

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

0

我会说,如果你想确保它正确地呈现,即使奇怪的事情是防止PHP页面来呈现

ErrorDocument 500 /some/page.php 

应该做的伎俩,或只是一个不错的HTML页面。

为了触发你看这个雁错误页面:How to return an HTTP 500 code on any error, no matter what

+0

当PHP脚本引发致命错误时,OP正在寻找触发器500。 – 2010-08-25 22:36:58

0

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

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

throw new Exception();