我想配置Apache在PHP脚本引发致命错误时向用户发送500响应,并使用自定义500页面。 我现在所拥有的是它会在页面内容中打印错误内容,这有利于开发但不适合生产。
如何配置Apache以使用自定义页面向用户发送500响应?
答案 0 :(得分:1)
假设您不仅要发送500
标头(这很容易),而且确实在Apache的系统中触发500错误,那么似乎没有简单的解决方案。
根据this question,是 PHP自PHP 5.2.4起的默认行为,如果:
我不确定这种行为是多么可靠是长期的(即当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();