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 服务器的错误日志或其他配置的错误日志中。您可以在加载页面期间对日志文件执行操作,而不是从网站读取它们。