Краткое разъяснение конфигурационных
директив.
-
error_reporting
integer
-
Задает уровень протоколирования ошибки. Параметр может быть либо числом,
представляющим битовое поле, либо именованной константой.
Соответствующие уровни и константы приведены в разделе
Предопределенные константы,
а также в php.ini. Для установки настройки во время выполнения используйте функцию
error_reporting(). Смотрите также описание директивы
display_errors.
В PHP 5.3 и новее, значение по умолчанию равно
E_ALL
&
~E_NOTICE
&
~E_STRICT
&
~E_DEPRECATED
. При этой настройке не отображаются уровни ошибок
E_NOTICE
, E_STRICT
и E_DEPRECATED
. Можно отображать их при разработке.
До версии PHP 5.3.0, значением по умолчанию было
E_ALL
&
~E_NOTICE
&
~E_STRICT
.
Замечание:
Включение E_NOTICE
во время разработки имеет ряд преимуществ.
Для отладки: NOTICE сообщения могут предупреждать о возможных ошибках в коде.
Например, использование не проинициализированных переменных вызовет подобное
сообщение. Это очень полезно при поиске опечаток и экономит время при отладке.
NOTICE сообщения также предупреждают о плохом стиле. Например,
$arr[item] лучше писать так:
$arr['item'] с тех пор, как PHP начал интерпретировать
"item" как константу. Если это не константа, PHP
принимает это выражение за строковый индекс элемента массива.
Замечание:
До PHP 5.4.0
E_STRICT
не был включен в состав E_ALL
,
поэтому необходимо явно включать этот уровень ошибок в PHP < 5.4.0. Включение
E_STRICT
во время разработки также имеет свои преимущества.
STRICT сообщения предлагают подсказки, которые могут помочь обеспечить лучшую
функциональную и обратную совместимость вашего кода. Эти сообщения могут включать в
себя такие вещи, как вызов нестатических методов статически, определение свойств в
совместимого класса, в то время как они уже определены в используемом трейте, и до
PHP 5.3 некоторые устаревшие возможности также будут выдавать ошибки уровня
E_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, но не на явно вызываемые функции,
такие как error_log().
Если используется 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
-
Имя файла, в который будут добавляться сообщения об ошибках. Файл
должен быть открыт для записи пользователем веб-сервера. Если
используется специальное значение syslog, то
сообщения будут посылаться в системный журнал. На Unix-системах это
syslog(3), на Windows NT - журнал событий. См. также: syslog().
Если директива не задана, ошибки будут направляться в SAPI журналы.
Например, это могут быть журналы ошибок Apache или поток
stderr командной строки CLI.
Смотрите также функцию error_log().
-
syslog.facility
string
-
Указывает, какой тип программы регистрирует сообщение.
Действует только в том случае, если опция error_log установлена в "syslog".
-
syslog.filter
string
-
Указывает тип фильтра для фильтрации регистрируемых сообщений.
Разрешенные символы передаются без изменений; все остальные записываются в шестнадцатеричном представлении с префиксом \x.
Существует три поддерживаемых типа фильтров:
-
all – все символы
-
no-ctrl – все символы, кроме управляющих
-
ascii – все печатные символы ASCII и NL
Действует только в том случае, если опция error_log установлена в "syslog".
-
syslog.ident
string
-
Определяет строку идентификатора, которая добавляется к каждому сообщению.
Действует только в том случае, если опция error_log установлена в "syslog".