Как спрятать ошибки php

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

У меня вопрос. Чтобы отключить вывод ошибок вообще (если заливаю сайт на прод.), то нужен тот же самый код, только везде значения — 0? Или хватит только одной строчки? Если одной, то какая из них?

Простой 6 комментариев

Konata69lol

Вывод ошибок лучше не выключать. Для прод режима перенаправлять все ошибки на 404 страницу, ошибки писать в лог.

sorry_i_noob

Konata Izumi, спасибо за совет. А как отловить ошибку? Чтобы написать ее в лог. Это ведь не исключение, где можно ведь код, например, обернуть в try и в catch писать лог.

serginhold

В php5 можно по извращаться с register_shutdown_function

slo_nik

Konata69lol

slo_nik

Konata Izumi, ну а почему бы не дополнить совет и не превратить его в полноценный ответ?
Например, показать самый простой способ записать в лог ошибку.

glaphire

ini_set('display_errors', 0); ini_set('display_startup_errors', 0); error_reporting(E_ALL);

sorry_i_noob

glaphire

sorry_i_noob, в документации пишут, что display_startup_errors можно явно не отключать, но что Вам даст экономия на одной строчке против того, что ошибка может показываться пользователю, если на хостинге в php.ini что-то поменяется? У меня такое было при деплое на прод, лучше добавить заранее

FanatPHP

Konata69lol

Вывод ошибок лучше не выключать. Так вы лишите себя зацепок в случае багов на проде.
Для себя вывод подробностей ошибок перенаправляем в лог (файл/бд/другое хранилище).

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

Читайте также:  Title

Еще вариант — средиректить пользователя на главную страницу и флеш сообщением вывести краткое описание ошибки.

Acuna

Я бы не рекомендовал затыкать вывод ошибок полностью, это bad practice. Пишу на PHP уже лет 10, и только недавно установил уровень E_ALL, исправление всех ошибок заняло где-то неделю, но сейчас я нарадоваться не могу, ибо ругается даже на отсутствие ключей в массиве (ибо в большинстве случаев если обращаются к какому-либо ключу, он должен быть в массиве, а его отсутствие — следствие какой-то проблемы). Об отсутствии какой-либо переменной я и вовсе не говорю. Для юзера достаточно просто подавить вывод ошибок (ибо сайт не будет работать только при E_FATAL и E_COMPILE, когда вообще не получается получить байткод), а для разрабов ошибки можно писать хоть в текстовый файл, используя собственный обработчик set_error_handler ().

Источник

Как включить или выключить отображение ошибок в PHP?

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

В скрипте PHP

1) В PHP есть всего лишь один оператор, который поддерживает систему управления ошибками — это знак @. Он позволяет проигнорировать сообщение любое сообщение об ошибке. Его нужно ставить ПЕРЕД выражением, которое может её содержать.

В примере специально допущена ошибка, но она НЕ будет отображена

2) Также можно перед проверяемым скриптом PHP можно вставить настройку параметра отображения ошибок (display_errors). Он может приобретать значение либо On (показывать), либо Off (скрыть).

ini_set('display_errors','On'); 
error_reporting('E_ALL');

И соответственно после кода, который проверялся на ошибки, выставить параметр обратно.

Например, Вы хотите увидеть ошибки в скрипте

ini_set('display_errors', 'On'); // сообщения с ошибками будут показываться 
error_reporting(E_ALL); // E_ALL - отображаем ВСЕ ошибки
$value = $var[$key]; // пример ошибки
ini_set('display_errors', 'Off'); // теперь сообщений НЕ будет

Можно выставить наоборот (в верхнем off, а в нижнем on), чтобы в конкретном отрезке кода ошибки НЕ отображались.

Читайте также:  List of visitors

В файле .htaccess

Чаще всего проблему решают именно указанием настроек в файле .htaccess, который располагается в корневой директории сайта. В строке php_flag display_errors нужно также выставить On или Off

php_flag display_errors On 
#показать все ошибки кроме предупреждений (Notice)
php_value error_reporting "E_ALL & ~E_NOTICE"

В файле php.ini

Как видите, параметр можно указать в нескольких местах. Однако, если у Вы хотите, чтобы целиком на сайте этот параметр имел определённое значение, то проще выставить его в файле php.ini.(к нему на хостинге не всегда может быть доступ), но в этом случае можно будет даже обойти настройки всего хостинга

error_reporting = E_ALL 
display_errors On

В верхней строке выбираем все виды ошибок, в нижней даём добро на их отображение.

После правок необходимо перезапустить Apache, чтобы настройки были изменены и вступили в силу (graceful или restart):

sudo apachectl -k graceful

В каком порядке обрабатывается параметр ошибок

В самом начале учитывается параметр php.ini , затем .htaccess , а после то, что указано непосредственно в скрипте PHP. Так что если что-то не сработало, то смотрим по цепочку выше, возможно, там настройка другая.

Как обычно спасибо за внимание и удачи! Надеюсь статья была полезна!

Источник

Как спрятать ошибки php

Есть множество различных способов, какие-то могут работать у вас на сайте, какие-то нет.

Я пользуюсь простой записью вида :

Если «off» отключено, если «on» включено. Данную запись нужно поставить в начало страницы.

Естественно, что желательно иметь сайт построенный на «инклудах», чтобы данную запись поместить на одну страницу а не тыкать в каждую страницу, либо это должен быть движок.

Как собственно данный сайт сделанный на html + php + css с использованием икнклудов.

Читайте также:  Html validator css validator

Скрыть ошибку notice

Иногда встречается ошибка notice — её можно забить таким образом:

Скрыть ошибку через ini файл

Открываем файл ini — он должен находиться выше корневой папки.. Ищем строку и ставим вместо on — off

Скрыть ошибку через .htaccess файл

В корневой папке должен быть файл htaccess

php_flag display_errors off

php_flag display_startup_errors off

Скрыть ошибки через панель администратора

Можно включать, отключать показ ошибок через панель администрирования, если мы говорим о том хостинге на котором я нахожусь! (Кстати рекомендую – отличный хостинг! )
Для примера давайте покажу, где отключать включать ошибки php у провайдера RUWEB.NET

Заходим в админ панель хостинга, ищем настройки php.

php показать/скрыть ошибки

Ну и далее собственно , включаем или отключаем показ ошибок на сайте.

php показать/скрыть ошибки

Php не показывает ошибки белый экран.

Если у вас вместо ошибок показывается белый экран, либо просто не выводятся ошибки, то возможно несколько вариантов.

Нельзя утверждать на все 100%, но возможно от настроек файла ini или же настроек через панель администрирования…

Но одно можно утверждать на 100% — если ошибка не выводится. то что-то этому мешает!

Мой способ скрыть ошибки php

Не знаю какой способ скрыть ошибки вы выберете, и все те способы, которые были описаны сверху- имеют право на существование, но я использую такой способ сокрытия ошибок, до безобразия примитивный!

Перёд include у меня стоит собака «@» — она будет забивать любую ошибку в коде php.

В случае, если я захожу на сайт в качестве админа, а так происходит в любом случае. То я увижу любую ошибку, а вот пользователь увидит пустую страницу.

Источник

Оцените статью