Настройка во время выполнения

Поведение этих функций зависит от установок в php.ini.

Настройки конфигурации протоколирования событий и ошибок
Имя По умолчанию Меняемо Список изменений
error_reporting NULL PHP_INI_ALL  
display_errors "1" PHP_INI_ALL  
display_startup_errors "0" PHP_INI_ALL  
log_errors "0" PHP_INI_ALL  
log_errors_max_len "1024" PHP_INI_ALL Available since PHP 4.3.0.
ignore_repeated_errors "0" PHP_INI_ALL Доступно, начиная с PHP 4.3.0.
ignore_repeated_source "0" PHP_INI_ALL Доступно, начиная с PHP 4.3.0.
report_memleaks "1" PHP_INI_ALL Доступно, начиная с PHP 4.3.0.
track_errors "0" PHP_INI_ALL  
html_errors "1" PHP_INI_ALL PHP_INI_SYSTEM в PHP <= 4.2.3.
xmlrpc_errors "0" PHP_INI_SYSTEM Доступно, начиная с PHP 4.1.0.
xmlrpc_error_number "0" PHP_INI_ALL Доступно, начиная с PHP 4.1.0.
docref_root "" PHP_INI_ALL Доступно, начиная с PHP 4.3.0.
docref_ext "" PHP_INI_ALL Доступно, начиная с PHP 4.3.2.
error_prepend_string NULL PHP_INI_ALL  
error_append_string NULL PHP_INI_ALL  
error_log NULL PHP_INI_ALL  
Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.

Краткое разъяснение конфигурационных директив.

error_reporting integer

Задает уровень протоколирования ошибки. Параметр может быть либо числом, представляющим битовое поле, либо именованной константой. Соответствующие уровни и константы приведены в разделе Предопределенные константы, а также в php.ini. Для установки настройки во время выполнения используйте функцию error_reporting(). См. также описание директивы display_errors.

В PHP 4 и PHP 5 значение по умолчанию E_ALL & ~E_NOTICE. В этом режиме ошибки уровня E_NOTICE не показываются. Однако, они могут потребоваться во время разработки скрипта.

Замечание:

Включение E_NOTICE во время разработки имеет ряд преимуществ. Для отладки: NOTICE сообщения могут предупреждать о возможных ошибках в коде. Например, использование непроинициализированных переменных вызовет подобное сообщение. Это очень полезно при поиске опечаток и экономит время при отладке. NOTICE сообщения также предупреждают о плохом стиле. Например, $arr[item] лучше писать так: $arr['item'] с тех пор, как PHP начал интерпретировать "item" как константу. Если это не константа, PHP принимает это выражение за строковый индекс элемента массива.

Замечание:

В PHP 5 доступен новый уровень ошибок E_STRICT. Так как E_STRICT не входит в состав E_ALL, необходимо явно включать этот уровень ошибок. Включение E_STRICT во время разработки также имеет свои преимущества. STRICT сообщения помогают использовать наиболее современные и согласованные способы написания кода. Например, они будут предупреждать об использовании устаревших функций.

Замечание: PHP константы за пределами PHP

Использования PHP констант за пределами PHP, например в файле httpd.conf, не имеет смысла, так как в таких случаях требуются целочисленные значения (integer). Более того, с течением времени будут добавляться новые уровни ошибок, а максимальное значение константы E_ALL соответственно будет расти. Поэтому в месте, где предполагается указать E_ALL, лучше задать большое целое число, чтобы перекрыть все возможные битовые поля. Таким числом может быть, например, 2147483647 (оно включит все возможные ошибки, не только E_ALL).

display_errors string

Эта настройка определяет, требуется ли выводить ошибки на экран вместе с остальным выводом, либо ошибки должны быть скрыты от пользователя.

Значение "stderr" посылает ошибки в поток stderr вместо stdout. Значение доступно в версии PHP 5.2.4. В ранних версиях эта директива имела тип boolean.

Замечание:

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

Замечание:

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

display_startup_errors boolean

Даже если display_errors включена, ошибки, возникающие во время запуска PHP, не будут отображаться. Настойчиво рекомендуем включать директиву display_startup_errors только для отладки.

log_errors boolean

Отвечает за выбор журнала, в котором будут сохраняться сообщения об ошибках. Это может быть журнал сервера или error_log. Применимость этой настройки зависит от конкретного сервера.

Замечание:

Настоятельно рекомендуем при работе на готовых работающих web сайтах протоколировать ошибки там, где они отображаются.

log_errors_max_len integer

Задание максимальной длины log_errors в байтах. В error_log добавляется информация об источнике. Значение по умолчанию 1024. Установка значения в 0 позволяет снять ограничение на длину log_errors. Это ограничение распространяется на записываемые в журнал ошибки, на отображаемые ошибки, а также на $php_errormsg.

Если используется integer, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ.
ignore_repeated_errors boolean

Не заносить в журнал повторяющиеся ошибки. Ошибка признается повторяющейся, если происходит в том же файле и в той же строке, и если настройка ignore_repeated_source выключена.

ignore_repeated_source boolean

Игнорировать источник ошибок при пропуске повторяющихся сообщений. Когда эта настройка включена, повторяющиеся сообщения об ошибках не будут заноситься в журнал вне зависимости от того, в каких файлах и строках они происходят.

report_memleaks boolean

Если настройка включена (по умолчанию), будет формироваться отчет об утечках памяти, зафиксированных менеджером памяти Zend. На POSIX платформах этот отчет будет направляться в поток stderr. На Windows платформах он будет посылаться в отладчик функцией OutputDebugString(), просмотреть отчет в этом случае можно с помощью утилит, вроде » DbgView. Эта настройка имеет смысл в сборках, предназначенных для отладки. При этом E_WARNING должна быть включена в список error_reporting.

track_errors boolean

Если включена, последняя произошедшая ошибка будет первой в переменной $php_errormsg.

html_errors boolean

Отключает HTML тэги в сообщениях об ошибках. Новый формат HTML сообщений об ошибках предоставляет возможность вставлять ссылки в сообщения и перенаправлять пользователя на страницы с описаниями ошибок. За такие ссылки ответственны docref_root и docref_ext.

xmlrpc_errors boolean

Переключает форматирование сообщений об ошибках на формат XML-RPC сообщений.

xmlrpc_error_number integer

Используется в качестве значения XML-RPC элемента faultCode.

docref_root string

Новый формат ошибок содержит ссылку на страницу с описанием ошибки или функции, вызвавшей эту ошибку. Можно разместить копию описаний ошибок и функций локально и задать ini директиве значение URL этой копии. Если, например, локальная копия описаний доступна по адресу "/manual/", достаточно прописать docref_root=/manual/. Дополнительно, необходимо задать значение директиве docref_ext, отвечающей за соответствие расширений файлов файлам описаний вашей локальной копии, docref_ext=.html. Также возможно использование внешних ссылок. Например, docref_root=http://manual/en/ или docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F"

В большинстве случаев вам потребуется, чтобы значение docref_root оканчивалось слешем "/". Тем не менее, бывают случаи, когда это не требуется (см. выше, второй пример).

Замечание:

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

docref_ext string

См. docref_root.

Замечание:

Значение docref_ext должно начинаться с точки ".".

error_prepend_string string

Строка, которая будет выводиться непосредственно перед сообщением об ошибке.

error_append_string string

Строка, которая будет выводиться после сообщения об ошибке.

error_log string

Имя файла, в который будут добавляться сообщения об ошибках. Файл должен быть открыт для записи пользователем web сервера. Если используется специальное значение syslog, то сообщения будут посылаться в системный журнал. На Unix системах это syslog(3), на Windows NT - журнал событий. Системный журнал не поддерживается в Windows 95. См. также: syslog(). Если директива не задана, ошибки будут направляться в SAPI журналы. Например, это могут быть журналы ошибок Apache или поток stderr командной строки CLI.


Участник рейтинга Тэглайн 2010