2 окт. 2009 г.

PHP: включение режима отображения ошибок

Данный режим позволяет наиболее просто найти программную ошибку, однако, по соображениям безопасности ряд хостеров по умолчанию его отключают.

Для включения данного режима (постоянно или временно - решать Вам) есть несколько способов, я перечислю те из них, которые использовал на практике:

Включение режима отображения ошибок непосредственно в необходимом PHP скрипте:

ini_set('error_reporting', E_ALL);
ini_set ('display_errors', 1);


Включение режима отображения ошибок с помощью .htaccess:
php_value display_errors 1
php_value error_reporting 2047


Обработка ошибок с помощью PHP:

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

Наиболее часто используемые значения:

E_ALL - Все предупреждения и ошибки (кроме E_STRICT в PHP < 6).
E_ERROR - Критические ошибки во время выполнения скрипта (выполнение скрипта при этом прекращается).
E_WARNING - Предупреждения во время выполнения скрипта (выполнение скрипта продолжается)
E_PARSE - Ошибки при трансляции кода (генерируются только парсером).
E_NOTICE - Замечания  во время выполнения скрипта (предупреждает о возможной некритической ошибке в коде).


Дополнительные значения:

E_CORE_ERROR - Критические ошибки в момент старта PHP (как E_ERROR, только генерируются ядром PHP).
E_CORE_WARNING - Некритические предупреждения во время старта PHP (как E_WARNING, только генерируются ядром PHP).
E_COMPILE_ERROR - Критические ошибки во время трансляции кода (как E_ERROR, только генерируются скриптовым движком Zend)
E_COMPILE_WARNING - Предупреждения во время трансляции кода (как E_WARNING, только генерируются скриптовым движком Zend)
E_USER_ERROR - Сгенерированные пользователем ошибки (как E_ERROR, только генерируются в PHP коде с помощью функции trigger_error())
E_USER_WARNING - Сгенерированные пользователем предупреждения (как E_WARNING, только генерируются в PHP коде с помощью функции trigger_error())
E_USER_NOTICE - Сгенерированные пользователем замечания (как E_NOTICE, только генерируются в PHP коде с помощью функции trigger_error())


Работает с PHP 5.0

E_STRICT -  показывает рекомендуемые изменения к коду для обеспечения дальнейшей его совместимости с новыми версиями


Работает с PHP 5.3.0

E_DEPRECATED - замечания при выполнении скриптов (замечания касаются кода, который не будет работать в будующих версиях)
E_USER_DEPRECATED - аналогично E_DEPRECATED, только замечания генерируются в PHP коде с помощью функции trigger_error())


Пример использования функции error_reporting():

// Отключает вывод всех ошибок
error_reporting(0);
// Выводит некритичные ошибки выполнения скрипта
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Выводит все ошибки, кроме замечаний E_NOTICE
// (режим по умолчанию)

error_reporting(E_ALL ^ E_NOTICE);
// можно формировать гибкие типа вывода
error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
// выводит все ошибки PHP
error_reporting(E_ALL);
// или можно так
error_reporting(-1);


Включение вывода замечаний MySQL:
(для отключения необходимо вместо On написать Off)

ini_set("mysql.trace_mode","On");


P.S. При написании данной статьи я подглядывал в официальный мануал по PHP (рекомендую)

Комментариев нет: