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

В скрипте PHP

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

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

$value = @$var[$key];
2) Также можно перед проверяемым скриптом PHP можно вставить настройку параметра отображения ошибок (display_errors). Он может приобретать значение либо On (показывать), либо Off (скрыть).
ini_set('display_errors','On');
error_reporting('E_ALL');
И соответственно после кода, который проверялся на ошибки, выставить параметр обратно.
ini_set('display_errors','Off');

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

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


В файле .htaccess

Чаще всего проблему решают именно указанием настроек в файле .htaccess, который располагается в корневой директории сайта. В строке php_flag display_errors нужно также выставить On или Off
php_flag display_errors On #показать все ошибки кроме предупреждений (Notice)
php_value error_reporting "E_ALL & ~E_NOTICE"

Если Вам нужно работать с конкретным типом ошибок, то привожу основные их виды:

E_ALL - все ошибки
E_ERROR - ошибки функций (критические)
E_WARNING - предупреждения
E_PARSE - ошибки синтаксиса
E_NOTICE - замечания (ненормальный код - кодировка и тп)
E_CORE_ERROR - ошибка обработчика
E_CORE_WARNING - предупреждения обработчика
E_COMPILE_ERROR - ошибка компилятора
E_COMPILE_WARNING - предупреждение компилятора
E_USER_ERROR - ошибка пользователей
E_USER_WARNING - предупреждение пользователей
E_USER_NOTICE - уведомления пользователей


В файле php.ini

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

В php.ini:

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

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

sudo apachectl -k graceful


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

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


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

ТЕГИ:

Чтобы добавить свой комментарий, необходимо пройти аутентификацию
Комментарии
Ничего не найдено.