Apache ErrorDocument не работает для ошибки PHP 500 - PullRequest
5 голосов
/ 12 февраля 2010

У меня есть ряд ErrorDocuments настроек в моем файле .htaccess для ошибок, таких как 404, 401, 403 и т. Д., Которые все перенаправляют на мою страницу ошибок, но набор ErrorDocument для ошибки 500 никогда не отображается, когда PHP сообщает 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, и в моем httpd.conf также нет директив ErrorDocument. Где-нибудь еще я должен искать?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 05 августа 2011

См. этот ответ на очень похожий вопрос. По сути, PHP вряд ли когда-нибудь вызовет 500.

0 голосов
/ 06 февраля 2013

Я столкнулся с той же проблемой при работе с codeigniter и Imagick. imagick устанавливал ошибку HTTP 500, когда что-то пошло не так, и в этом случае пользовательское сообщение Codeigniter 500 не отображалось.

Я решил эту проблему, добавив try-catch ко всем функциям Imagick. Проверьте, где из 500 возникает проблема, а затем добавьте туда try-catch. Что касается

 ErrorDocument 500 /errorpage.php?error=500

, я читал онлайн-загрузки о том же, где некоторые люди утверждают, что это решило их похожую проблему, другие говорят, что это не поможет, поскольку Apache передал управление PHP. Возможно, браузер отобразит свое сообщение об ошибке 500.

0 голосов
/ 30 марта 2010

Возможно, вам понадобится добавить объявление ErrorDocument ранее в цепочке настроек Apache. Если вы добавите это в vhost conf, оно может не вызываться.

0 голосов
/ 12 февраля 2010

Я не верю, что Apache позволит вам запускать PHP-файлы для 500 ошибок, потому что страница ошибки может генерировать ошибку. Попробуйте вывести свою ошибку 500 в файл HTML и укажите свои директивы на это.

...