SagePtr
@SagePtr
Еда - это святое

Можно ли без лишнего изврата выводить красивую страницу при ошибке PHP?

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

Или для этих целей нужно обязательно устанавливать свой обработчик для непойманных исключений, в этом обработчике собирать из пойманного исключения Stack trace, переводить всё это в вид строки, если log_errors установлен в true - то записывать в логи веб-сервера, а если display_errors установлен в true - то выводить и на экран, если display_errors не установлен - то выводить красивую страницу 500? Или как-то это всё можно упростить?

Если обязательно извращаться, то есть какой-нибудь легковесный компонент, выполняющий вышеперечисленное и не тянущий за собой полфреймворка?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 4
DevMan
@DevMan Куратор тега PHP
можно, все зависит от того как настроены и пых и вебсервер.
Ответ написан
Keanor
@Keanor
Ведущий разработчик
Если у вас единая точка входа, то проще там в try {} catch {} обернуть, и используемым шаблонизатором отрендерить, попутно сохранив информацию об исключении и каких-нибудь дополнительных данных.

На уровне nginx можно решить путем error_page 500 /500.html на уровне server
Ответ написан
zxscv
@zxscv
То что вы написали - обязательно. Зачем какой то компонент, когда логику вы сами описали и она достаточно простая. Однако лучше не ориентироваться на display_errors , а лучше завести константу или переменную отвечающую за вывод лога на экран, а display_errors всегда = 0
Ответ написан
65536
@65536
Для вывода на экран вот эта хорошая https://github.com/filp/whoops

Можно еще наладить чтобы ссылка открывала редактор в нужном файле на нужной строке
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
07 мар. 2021, в 03:18
1500 руб./за проект
06 мар. 2021, в 22:58
70000 руб./за проект
06 мар. 2021, в 22:36
10000 руб./за проект