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

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

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

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

Если обязательно извращаться, то есть какой-нибудь легковесный компонент, выполняющий вышеперечисленное и не тянущий за собой полфреймворка?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 4
DevMan
@DevMan
можно, все зависит от того как настроены и пых и вебсервер.
Ответ написан
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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 15:51
3000 руб./за проект
25 апр. 2024, в 15:31
70000 руб./за проект
25 апр. 2024, в 15:26
15000 руб./за проект