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

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

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

在我的虚拟主机中我有

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

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

为了测试这一点,我刚刚创建了一个损坏的 php 页面,它确实返回了 500 标头,但页面是空白的。我怀疑这是因为 php 生成了 500 页面,而不是 apache。那么我该如何让 php 显示我的自定义 apache 错误文档呢?

答案1

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

6.6. 服务器错误 5xx

5xx(服务器错误)类状态代码表示服务器意识到它已经出错或无法执行请求的方法。- -

6.6.1. 500 内部服务器错误

500(内部服务器错误)状态代码表示服务器遇到意外情况,导致其无法满足请求。

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

error_reporting = E_ALL
log_errors = On
display_errors = Off

tail -f这会将错误记录到 Web 服务器的错误日志或其他配置的错误日志中。您可以在加载页面期间对日志文件执行操作,而不是从网站读取它们。

相关内容