Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5 для начинающих

  Все выпуски  

НАСТРОЙКИ PHP: Сообщения об ошибках


PHP 5 для начинающих

Вниманию новых подписчиков!

Обратите, пожалуйста, внимание на то, что отдельные выпуски рассылки в той или иной мере взаимосвязаны. С предыдущими выпусками Вы можете ознакомиться:

  1. в архиве рассылки (оригиналы выпусков);
  2. на сайте рассылки (исправленные и дополненные версии).

# # #

Вы также можете подписаться на рассылку "PHP 5: Новые возможности".

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

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

Запись в файл бывает обычно включена (Вы можете убедиться в этом, проверив установку директивы log_errors); выключать ее не следует. Расположение самого файла указано в директиве error_log[1]. Анализ содержимого этого файла может стать источником ценной информации для разработчика, если скрипт ведет себя неправильно.

Вывод на экран регулируется директивой display_errors. Это логическая директива, она действует как переключатель (on/off). Обычно вывод сообщений на экран отключен из соображений безопасности.

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

php_flag display_errors on
ini_set('display_errors', '1');

Замечание

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

Тем, какие именно сообщения выводятся на экран и/или сохраняются в файле (уровни: фатальные ошибки, предупреждения, замечания и т. д.), управляет директива error_reporting. Она принимает числовое значение или заранее определенную константу (E_ERROR, E_WARNING, E_NOTICE, E_ALL и т. п.).

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

С целью отладки имеет смысл устанавливать максимально возможное значение директивы error_reporting: сочетание E_ALL и E_STRICT (последняя константа введена в PHP 5 для предупреждения об устаревших функциях и предложения более эффективных методов кодирования). Ниже показано, как это может быть сделано в файле .htaccess и непосредственно в скрипте.

php_value error_reporting 4095
error_reporting(E_ALL | E_STRICT);


[1] Специальное значение syslog означает, что сообщения выводятся в один файл с системными сообщениями.

Created with DocBook Created with Libxslt


В избранное