如何在 PHP 错误上设置 Apache HTTP 503 错误代码而不是 HTTP 500
Posted
技术标签:
【中文标题】如何在 PHP 错误上设置 Apache HTTP 503 错误代码而不是 HTTP 500【英文标题】:How to set Apache HTTP 503 error code instead of HTTP 500 on PHP error 【发布时间】:2011-07-17 15:39:21 【问题描述】:任何想法如何在 php 错误显示关闭后将 Apache HTTP 500(内部服务器错误)错误替换为 PHP 错误上的 HTTP 503(服务不可用)?这是通知蜘蛛尽快返回站点的更好选择...
附: 如果可能的话,能够将 Retry-After 附加到 50x 错误代码会很棒......
干杯, /马辛
【问题讨论】:
【参考方案1】:我想知道你是否可以做类似 Apache 的东西
Redirect 503 /error/500 /maintenance.html
在一个
ErrorDocument 500 /error/500
指令?
【讨论】:
【参考方案2】:我假设您指的是 PHP 的新(自 5.2.4 起)默认行为 throwing a 500 if an error occurs,并且没有进行其他输出。
AFAIK,该行为是硬编码的,如果不更改 PHP 本身,您将无法更改它。
最简单的方法可能是设置custom error handler,然后为您抛出 503:
header("HTTP/1.1 503 Service Unavailable");
echo "--- error message here -----";
die();
【讨论】:
但在那种情况下我不能有 error_reporting(0); - 错误必须启用对吗? @Marcin 不,它可以是任何值。在任何情况下都会调用您的错误处理程序。以上是关于如何在 PHP 错误上设置 Apache HTTP 503 错误代码而不是 HTTP 500的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 htaccess 在 apache 服务器上设置 post_max_size(出现内部服务器错误)