Учебное пособие: Обработка ошибок в коде программ РНР

error_reporting

● Возможные значения: числовая константа (по умолчанию — E_ALL~E_NOTICE.

● Где устанавливается: php.ini, .htaccess, ini_set ().

Устанавливает "уровень строгости" для системы контроля ошибок РНР. Значение этого параметра должно быть целым числом, которое интерпретируется как десятичное представление двоичной битовой маски. Установленные в 1 биты задают, насколько детальным должен быть контроль. Можно также не возиться с битами, а использовать константы. В табл. 1.1 приведены некоторые константы, которые на практике применяются чаще всего.

Таблица 1.1. Биты, управляющие контролем ошибок

Бит Константа PHP Назначение
1 E_ERROR Фатальные ошибки
2 E_WARNING Общие предупреждения
4 E_PARSE Ошибки трансляции
8 E_NOTICE Предупреждения
16 E_CORRE_ ERROR Глобальные предупреждения (почти не используется)
32 E_CORRE_STRING Глобальные ошибки (не используется)
2048 E_STRICT Различные "рекомендации" РНР по улучшению кода (на­пример, замечания насчет вызова устаревших функций)
2047 E_ALL Все перечисленные флаги, за исключением E_STRICT

Чаще всего встречается значение 7 (1+2 + 4), или, что то же самое, E_ALL~E_NOTICE (здесь оператор ~ означает побитовое "исключающее ИЛИ"). Оно задает полный контроль, кроме некритичных предупреждений интерпретатора (таких, например, как обращение к неинициализированной переменной). Часто это значение задается по умолчанию при установке РНР.

Если вы разрабатываете скрипты на РНР, первое, что вам стоит сделать, — это устанавливать значение error_reporting равным E_ALLили даже E_ALL|E_STRICT, т.е. включить абсолютно все сообщения об ошибках.

Хотя в уже имеющихся сценариях (включая популярные системы phpBB, phpNuke и т. д.) это, скорее всего, породит целые легионы самых разнообразных предупреждений, не стоит их пугаться: они свидетельствуют лишь о недостаточно хорошем качестве кода.

Режим E_ALL очень помогает при отладке скриптов. Существуют распространенные ошибки, над которыми можно просидеть не один час, в то время как с включенным режимом E_ALL они обнаруживаются в течение нескольких минут.

Лучше всего держать в файле php.ini максимально возможный режим контроля ошибок —E_ALLили даже E_ALLE_STRICT, т.е. включить абсолютно все сообщения об ошибках, а в случае крайней необходимости отключать его в скриптах в персональном порядке. Для этого существует три способа.

Способы отключения режима контроля ошибок:

● использоватьфункциюerror_reporting(E_ALL~E_NOTICE);

● запуститьфункциюini_set("error_reporting", E_ALL~E_NOTICE);

● использовать оператор @ для локального отключения ошибок.

1.3.2 ДИРЕКТИВАdisplay_errors

display_errors

log_errors

● Возможныезначения: on или off.

● Гдеустанавливается: php.ini, .htaccess, iniseto.

Если директива display_errors установлена в значение on, все сообщения об ошибках и предупреждения выводятся в браузер пользователя, запустившего скрипт.

Если же установлен параметр log_errors, то сообщения дополнительно попадают и в файл журнала (см. ниже директиву error_log).

При отладке скриптов рекомендуется устанавливать display_errors в значение on, потому что это сильно упрощает работу. И наоборот, если скрипт работает на хостинге, сообщения об ошибках нежелательны — лучше их выключить, а вместо этого включить log_errors.

1.3.3 ДИРЕКТИВАerror_log

error_log

● Возможные значения: абсолютный путь к файлу (по умолчанию — не задан).

● Где устанавливается: php.ini, .htaccess, ini_set().

В PHP существуют два метода вывода сообщений об ошибках: печать ошибок в браузер и запись их в файл журнала (log-файл). Директива error_log задает путь к журналу.

1.4 УСТАНОВКА РЕЖИМА ВЫВОДА ОШИБОК

Для установки режима вывода ошибок во время работы программы служит функция error_reporting().

int error_reporting([int $level])

Эта функция устанавливает "уровень строгости" для системы контроля ошибок РНР, т. е. величину параметра error_reporting в конфигурации РНР.

Рекомендуется первой строкой сценария ставить вызов:

К-во Просмотров: 386
Бесплатно скачать Учебное пособие: Обработка ошибок в коде программ РНР