#10. 1 php Типы ошибок. Параметры контроля и протоколирования ошибок (error_reporting, display_errors, log_errors, error_log)
Primary tabs
Классификация ошибок
По степени "серьезности":
- фатальные, то есть такие, автоматическое восстановление после которых невозможно. Сюда относится, например, обращение к несуществующему файлу. Если работа программы должна быть продолжена, то ситуация возникновения такой ошибки должна быть обработана программистом, то есть должен быть написан код восстановления, явно указывающий, что делать дальше в таком случае. Для перехвата фатальных ошибок, начиная с PHP7, используется механизм исключений (exceptions), описанный далее в этой главе.
- нефатальные — ошибки, восстановление после которых не требуется (выполнение скрипта не прерывается). Сюда относятся предупреждения (warnings), уведомления (notices), отладочные сообщения (debug notices).
По тому, где и в какой момент возникают:
- ошибки времени выполнения: возникают после запуска скрипта во время выполнения программы;
- ошибки, генерируемые ядром PHP;
- ошибки, возникающие на этапе компиляции — генерируются движком Zend;
- пользовательские ошибки — генерируются программистом с помощью функции
trigger_error().
По адресату сообщения об ошибке:
- пользовательские — сообщение адресуется конечному пользователю и выводится непосредственно в браузер. Например, сюда относится сообщение о том, что данные для авторизации были введены неверно.
- внутренние — сообщение об ошибке несет информацию, полезную для отладки приложения и бессмысленную для конечного пользователя. Например, номер строки и имя файла, где ошибка возникла. Такие сообщения принято записывать в лог-файл (журнал ошибок).
Директивы контроля и протоколирования ошибок. Файл php.ini
В php существуют специальные константы, определяющие какие именно ошибки должны отслеживаться, а также другие параметры протоколирования. Соответствующие директивы могут быть установлены в конфигурационном файле php.ini. Рассмотрим их подробнее:
- error_reporting — целочисленная константа. Значением является десятичное представление двоичной битовой маски. Установленные в 1 биты задают типы отслеживаемых в системе ошибок. На практике чаще всего для установки данного параметра используются специальные константы (см. табл.).
Таблица. Константы, задающие уровень строгости контроля ошибок
PHP Константа Значение Описание типа ошибки E_ERROR
1 фатальная ошибка времи выполнения, вызывает остановку скрипта E_WARNING
2 предупреждение во время выполнения программы, не вызывает остановку скрипта E_PARSE
4 ошибки трансляции, генерируются парсером исходного кода E_NOTICE
8 уведомление, указывающее на что-то, что может привести к ошибке E_CORE_ERROR
16 фатальная ошибка, генерируемая ядром PHP E_CORE_WARNING
32 предупреждение, генерируемое ядром PHP E_COMPILE_ERROR
64 фатальная ошибка, генерируемая движком Zend на этапе компиляции E_COMPILE_WARNING
128 предупреждение, генерируемое движком Zend на этапе компиляции E_USER_ERROR
256 фатальная ошибка, генерируемая скриптом при помощи функции trigger_error()
E_USER_WARNING
512 предупреждение, генерируемое скриптом при помощи функции trigger_error()
E_USER_NOTICE
1024 уведомление, генерируемое скриптом при помощи функции trigger_error()
E_STRICT
2048 рекомендации PHP по улучшению кода E_RECOVERABLE_ERROR
4096 фатальная ошибка с возможностью восстановления (ядро PHP остается в стабильном состоянии и может продолжать работу) E_DEPRECATED
8192 уведомление PHP об использовании устаревшего кода E_USER_DEPRECATED
16384 уведомление об использовании устаревшего кода, генерируемое при помощи trigger_error()
E_ALL
32767 Все перечисленные выше флаги, за исключением E_STRICT
По умолчанию при установке PHP чаще всего задается значение
E_ALL & ~E_NOTICE
, устанавливающее полный контроль, кроме некритичных уведомлений интерпретатора.В текущем скрипте можно установить локальное (только для этого скрипта) значение параметра error_reporting, например:
<?php error_reporting(E_ALL);
-
display_errors. Возможные значения:
on
(true
) илиoff
(false
). Включает или отключает вывод сообщений об ошибках в браузер пользователя. -
log_errors. Возможные значения:
on
(true
) илиoff
(false
). Включает или отключает вывод сообщений об ошибках в лог-файл, установленный директивой error_log. - error_log — строковая константа, задающая абсолютный путь к лог-файлу.
Все перечисленные выше параметры конфигурационного файла могут быть локально установлены для текущего скрипта с помощью функции ini_set()
, например:
<?php ini_set('error_reporting', E_ALL); ini_set('error_log', "file.txt"); ini_set('log_errors', true); ini_set('display_errors', true);
Посмотреть настройки текущей конфигурации можно, используя функцию ini_get()
, например,
<?php echo ini_get('error_reporting');
- Log in to post comments
- 818 reads
vedro-compota
Mon, 10/23/2023 - 18:19
Permalink
По теме:Включание отображения
По теме:
_____________
матфак вгу и остальная классика =)