Как полностью выключить вывод ошибок в PHP?

Здравствуйте! Обычно для включения максимально подробного вывода ошибок я использую этот код:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

У меня вопрос. Чтобы отключить вывод ошибок вообще (если заливаю сайт на прод.), то нужен тот же самый код, только везде значения - 0? Или хватит только одной строчки? Если одной, то какая из них?
  • Вопрос задан
  • 21889 просмотров
Решения вопроса 3
glaphire
@glaphire Куратор тега PHP
PHP developer
В точке входа в проект (index.php), в самом начале выставить все по нулям
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(E_ALL);
Ответ написан
Konata69lol
@Konata69lol
backend developer (php/go)
Вывод ошибок лучше не выключать. Так вы лишите себя зацепок в случае багов на проде.
Для себя вывод подробностей ошибок перенаправляем в лог (файл/бд/другое хранилище).

Пользователю не нужно показывать подробности ошибок (стектрейс). Достаточно отобразить страницу с кратким описанием (понятным пользователю) ошибки, например "404 Не найдено то-то" или "500 Ошибка сервера".

Еще вариант - средиректить пользователя на главную страницу и флеш сообщением вывести краткое описание ошибки.
Ответ написан
Комментировать
Acuna
@Acuna
Заполнил свой профиль
Я бы не рекомендовал затыкать вывод ошибок полностью, это bad practice. Пишу на PHP уже лет 10, и только недавно установил уровень E_ALL, исправление всех ошибок заняло где-то неделю, но сейчас я нарадоваться не могу, ибо ругается даже на отсутствие ключей в массиве (ибо в большинстве случаев если обращаются к какому-либо ключу, он должен быть в массиве, а его отсутствие - следствие какой-то проблемы). Об отсутствии какой-либо переменной я и вовсе не говорю. Для юзера достаточно просто подавить вывод ошибок (ибо сайт не будет работать только при E_FATAL и E_COMPILE, когда вообще не получается получить байткод), а для разрабов ошибки можно писать хоть в текстовый файл, используя собственный обработчик set_error_handler ().
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Доступ к php.ini есть? Если да, то добавьте
display_errors = off
Ответ написан
Комментировать
@dokicode
Можно ли как-то запретить вывод предупреждений, которые по сути не являются критичными, в поток, т.е. чтобы в логи все писалось, но в поток ничего не шло.
Данная ситуация сильно напрягает при асинхронных запросах к серверу, когда вместо ожидаемого ответа от сервера на клиента возвращается текст предупреждения.
Понимаю, что это наверное неправильно, но все же.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы