Apache отступает, когда PHP не работает - PullRequest
4 голосов
/ 15 сентября 2008

Мне было интересно, знает ли кто-нибудь о способе настройки apache для возврата к статической HTML-странице, сможет ли он (Apache) определить, что PHP умер? Это дало бы разработчику элегантное решение для отображения страницы с ошибкой, а не (в худшем случае) исходного кода страницы PHP, который должен был быть выполнен.

Спасибо.

Ответы [ 4 ]

8 голосов
/ 15 сентября 2008

Исходный код PHP отображается только тогда, когда apache не настроен правильно для обработки файлов php. То есть, когда правильный обработчик не был определен.

При ошибках то, что показано, может быть настроено на php.ini, в основном это переменная display_errors. Это должно быть выключено и log_errors включено в производственной среде.

Если php действительно умирает, apache вернет соответствующий код состояния HTTP (обычно 500) со страницей, определенной директивой ErrorDocument. Если он не умер, но застрял в петле, то, насколько я знаю, мало что можно сделать.

Вы можете указать другую страницу для разных кодов ошибок.

3 голосов
/ 15 сентября 2008

Я бы предположил, что это обычно приводит к ошибке 500, и вы можете настроить обработчик apaches 500 для отображения статической страницы:

ErrorDocument 500 /500error.html

Вы также можете прочитать об обработчиках ошибок на сайте документации Apache

1 голос
/ 15 сентября 2008

Настоящая проблема в том, что фатальные ошибки PHP не приводят к тому, что Apache возвращает код 500. Ошибки, за исключением E_FATAL и E_PARSE, могут обрабатываться любым способом, с помощью которого вы можете использовать set_error_handler().

0 голосов
/ 15 сентября 2008

Существует 2 способа использования PHP и Apache.

1. Install PHP as an Apache module: this way the PHP execution is a thread inside the apache process. So if PHP execution fails, then Apache process fails too. there is no fallback strategy.

2. Install PHP as a CGI script handler: this way Apache will start a new PHP process for each request. If the PHP execution fails, then Apache will know that, and there might be a way to handle the error.

независимо от способа установки PHP, при сбое выполнения PHP вы можете обрабатывать ошибки в файле php.ini.

...