Apache不显示PHP错误的自定义500错误页面

Apache不想显示我设置的自定义错误文档。

在我的虚位上,我有

DocumentRoot /var/www/site/public ... ErrorDocument 500 /500.html 

500.html位于/var/www/site/public/500.html

为了testing这个,我刚刚创build了一个破损的PHP页面,它返回一个500头,但是页面是空白的。 我怀疑这是PHP生成500页而不是apache的结果。 那么如何让PHP显示我的自定义Apache的错误文档?

这是正常的行为,因为PHP错误不被视为5xx服务器错误。 根据RFC 7231

6.6。 服务器错误5xx

5xx(服务器错误)类状态码指示服务器知道它已经发生错误或无法执行请求的方法。 – –

6.6.1。 500内部服务器错误

500(内部服务器错误)状态码指示服务器遇到意外情况,阻止它履行请求。

PHP错误应该始终是固定的,因为它们可能会造成安全问题。 出于同样的原因,处理php错误的最佳做法是将它们logging下来供程序员查看并隐藏用户。 这种设置将(以php.ini格式):

 error_reporting = E_ALL log_errors = On display_errors = Off 

这将loggingWeb服务器的错误日志或configuration的其他错误日志中的错误。 不要从站点读取它们,您可以在加载页面的过程中对日志文件执行tail -f命令。