如何在 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(出现内部服务器错误)

Apache 上 NodeJS Express 的 HTTP2 设置引发错误

多个输入字段数据提交上的php apache禁止错误

如何显示 PHP 错误?

如何显示 PHP 错误?

2 台相同服务器上的 PHP 错误:一个记录到 php 错误日志,另一个记录 apache 错误日志