Оглавление

22.4. Обработка ошибок

Задать  степень обработки и протоколирования ошибок позволяет директива error_reporting в файле php.ini:

error_reporting = E_ALL & ~E_NOTICE


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

 

Знак ~ (тильда), указанный перед значением, свидетельствует о том, что вывод сообщений об ошибке данного типа выключен.
В директиве можно использовать следующие двоичные побитовые операторы:
□ & — двоичное И;
□ | — двоичное ИЛИ.

error_reporting = E_ALL & ~E_NOTICE | E_STRICT


Если доступа к файлу php.ini нет (на виртуальном хостинге доступа точно не будет), то в сценарии можно использовать функцию error_reporting():

error_reporting(E_ALL & ~E_NOTICE);


В качестве параметра функции error_reporting() можно указать число:
□ в PHP 5.2:
6135 = E_ALL & ~E_NOTICE
6143 = E_ALL
8183 = E_ALL & ~E_NOTICE | E_STRICT
8191 = E_ALL | E_STRICT
□ в PHP 5.3:

30711 = E_ALL & ~E_NOTICE
30719 = E_ALL
32759 = E_ALL & ~E_NOTICE | E_STRICT
32767 = E_ALL | E_STRICT

 

Предыдущий пример можно заменить на следующий код:

error_reporting(6135); // в PHP 5.2
error_reporting(30711); // в PHP 5.3


На виртуальном хостинге принято не выводить ошибки в Web-браузер, а записывать  их  в  журнал  ошибок error.log.  В  этом  случае  при  возникновении фатальной  ошибки  пользователь  увидит  белый  экран,  а  не  сообщение  об ошибке.

 

Отключить  вывод  ошибок  в Web-браузер  позволяет  директива display_errors в файле php.ini:

display_errors = Off


А  включить  вывод  сообщений  об  ошибках  в журнал  ошибок позволяет  директива log_errors:

log_errors = On

Задать путь к файлу, в который будут выводиться ошибки, позволяет директива error_log:

error_log = 'C:/php5/err.txt'


Изменить эти директивы из скрипта можно с помощью функции ini_set():

error_reporting(E_ALL);
ini_set('display_errors', 'Off');
ini_set('error_log', 'err.txt');
ini_set('log_errors', 'On');
$file = fopen('file.txt', 'r');
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити