Как включить или выключить отображение ошибок
Иногда возникает потребность включить отображение ошибок что бы понять, причину неполадки, в тоже время бывают не значимые ошибки (предупреждения) которые не влияют на работу сайта, и что бы они не мешали, обычно отображение таких ошибок отключают.
В скрипте 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"[box type=”success” align=”alignleft” class=”” width=””]Если Вам нужно работать с конкретным типом ошибок, то привожу основные их виды:
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 – уведомления пользователей[/dropshadowbox]
В файле php.ini
Как видите, параметр можно указать в нескольких местах. Однако, если у Вы хотите, чтобы целиком на сайте этот параметр имел определённое значение, то проще выставить его в файле php.ini.(к нему на хостинге не всегда может быть доступ), но в этом случае можно будет даже обойти настройки всего хостинга
В php.ini:
error_reporting = E_ALL display_errors On
В верхней строке выбираем все виды ошибок, в нижней даём добро на их отображение.
После правок необходимо перезапустить Apache, чтобы настройки были изменены и вступили в силу (graceful или restart):
sudo apachectl -k graceful
В каком порядке обрабатывается параметр ошибок
В самом начале учитывается параметр php.ini , затем .htaccess , а после то, что указано непосредственно в скрипте PHP. Так что если что-то не сработало, то смотрим по цепочку выше, возможно, там настройка другая.
Leave a reply
You must login or register to add a new comment .