Apache ErrorDocument 不适用于 PHP 500 错误

问题描述 投票:0回答:5

我的 .htaccess 文件中有许多针对 404、401、403 等错误的

ErrorDocuments
设置,这些错误都重定向到我的错误页面,但是当 PHP 报告 500 时,永远不会显示为 500 错误设置的
ErrorDocument
. 500 代码发送到浏览器,输出为空白。我需要做一些特殊的事情才能启用 500 个错误文档以与 PHP 一起使用吗?

我的指令如下所示:

ErrorDocument 401 /errorpage.php?error=401
ErrorDocument 403 /errorpage.php?error=403
ErrorDocument 404 /errorpage.php?error=404
ErrorDocument 500 /errorpage.php?error=500

我查看了 php.ini,看不到任何明显会覆盖 Apache 设置的内容,并且我的 httpd.conf 中也没有

ErrorDocument
指令。我还应该寻找其他地方吗?

提前致谢。

apache errordocument
5个回答
2
投票

请参阅this对一个非常相似的问题的回答。基本上,PHP 几乎不会触发 500。


0
投票

您可能需要在 Apache conf 链的早期添加 ErrorDocument 声明。如果您将其添加到虚拟主机配置中,它可能不会被调用。


0
投票

我在使用 codeigniter 和 Imagick 时碰巧遇到了同样的问题。当出现问题时,imagick 设置了 500 HTTP 错误,在这种情况下,Codeigniter 的自定义 500 消息不会显示。

我通过向所有 Imagick 函数添加 try-catch 解决了这个问题。检查 500 问题是从哪里出现的,然后在那里添加一个 try-catch。至于

 ErrorDocument 500 /errorpage.php?error=500

,我在网上读到了同样的内容,有些人声称这解决了他们的类似问题,其他人则说这没有帮助,因为 Apache 已将控制权移交给 PHP。也许某些 php 代码将 headers 设置为 500,这可能会导致显示其自定义 500 错误消息的浏览器。


0
投票

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员,告知他们发生此错误的时间,以及您在出现此错误之前执行的操作。

服务器错误日志中可能提供有关此错误的更多信息。

此外,尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误....


-1
投票

我不相信 Apache 会让您运行出现 500 个错误的 PHP 文件,因为错误页面可能会生成错误。尝试将 500 错误渲染为 HTML 文件,并将指令指向该文件。

© www.soinside.com 2019 - 2024. All rights reserved.