Как установить код ошибки Apache HTTP 503 вместо HTTP 500 при ошибке PHP

есть идеи, как заменить ошибку Apache HTTP 500 (внутренняя ошибка сервера) на HTTP 503 (служба недоступна) при ошибке PHP, когда отображение ошибки PHP отключено? Это гораздо лучший способ сообщить паукам, чтобы они скоро вернулись на сайт...

P.S. было бы здорово иметь возможность добавить Retry-After к кодам ошибок 50x, если это возможно...

ура, /Марчин


person Marcin    schedule 17.03.2011    source источник


Ответы (2)


Я предполагаю, что вы имеете в виду новое (начиная с 5.2.4) поведение PHP по умолчанию выдает 500 в случае возникновения ошибки, и никаких других выходных данных не производится.

Насколько я знаю, это поведение жестко закодировано, вы не сможете изменить это, не изменив сам PHP.

Самый простой способ — настроить собственный обработчик ошибок, и получить для вас 503:

header("HTTP/1.1 503 Service Unavailable");
echo "--- error message here -----";
die();
person Pekka    schedule 17.03.2011
comment
но в этом случае у меня не должно быть error_reporting(0); - ошибки должны быть включены правильно? - person Marcin; 17.03.2011
comment
@Марчин, нет, это может быть любое значение. Ваш обработчик ошибок будет вызван в любом случае. - person Pekka; 18.03.2011

Интересно, могли бы вы сделать что-то вроде Apache

Redirect 503 /error/500 /maintenance.html 

on an

ErrorDocument 500 /error/500 

директива?

person site    schedule 21.01.2013