5

我的 .htaccess 文件中有许多ErrorDocuments设置错误,例如 404、401、403 等,它们都重定向到我的错误页面,但是ErrorDocument当 PHP 报告 500 时,永远不会显示 500 错误的设置。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 设置的内容,而且ErrorDocument我的 httpd.conf 中也没有任何指令。我还应该去哪里找?

提前致谢。

4

4 回答 4

2

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

于 2011-08-05T14:19:15.450 回答
0

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

于 2010-03-29T20:50:01.167 回答
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 错误消息的浏览器。

于 2013-02-06T08:37:11.927 回答
-1

我不相信 Apache 会允许你运行 PHP 文件来处理 500 个错误,因为错误页面可能会产生错误。尝试将您的 500 错误渲染为 HTML 文件并将您的指令指向该文件。

于 2010-02-12T16:25:08.327 回答