Настройка во время выполнения
Поведение этих функций зависит от установок в 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 | |
ignore_repeated_errors | "0" | PHP_INI_ALL | |
ignore_repeated_source | "0" | PHP_INI_ALL | |
report_memleaks | "1" | PHP_INI_ALL | |
track_errors | "0" | PHP_INI_ALL | Объявлено устаревшим в PHP 7.2.0. |
html_errors | "1" | PHP_INI_ALL | |
xmlrpc_errors | "0" | PHP_INI_SYSTEM | |
xmlrpc_error_number | "0" | PHP_INI_ALL | |
docref_root | "" | PHP_INI_ALL | |
docref_ext | "" | PHP_INI_ALL | |
error_prepend_string | NULL | PHP_INI_ALL | |
error_append_string | NULL | PHP_INI_ALL | |
error_log | NULL | PHP_INI_ALL | |
syslog.facility | "LOG_USER" | PHP_INI_SYSTEM | Доступно, начиная с PHP 7.3.0. |
syslog.filter | "no-ctrl" | PHP_INI_ALL | Доступно, начиная с PHP 7.3.0. |
syslog.ident | "php" | PHP_INI_SYSTEM | Доступно, начиная с PHP 7.3.0. |
Краткое разъяснение конфигурационных директив.
-
error_reporting
int -
Задает уровень протоколирования ошибки. Параметр может быть либо числом, представляющим битовое поле, либо именованной константой. Соответствующие уровни и константы приведены в разделе Предопределенные константы, а также в 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, не имеет смысла, так как в таких случаях требуются целочисленные значения (int). Более того, с течением времени будут добавляться новые уровни ошибок, а максимальное значение константы
E_ALL
соответственно будет расти. Поэтому в месте, где предполагается указатьE_ALL
, лучше задать большое целое число, чтобы перекрыть все возможные битовые поля. Таким числом может быть, например,2147483647
(оно включит все возможные ошибки, не толькоE_ALL
). -
display_errors
string -
Эта настройка определяет, требуется ли выводить ошибки на экран вместе с остальным выводом, либо ошибки должны быть скрыты от пользователя.
Значение
"stderr"
посылает ошибки в потокstderr
вместоstdout
. Значение доступно в версии PHP 5.2.4. В ранних версиях эта директива имела тип bool.Замечание:
Этот функционал предназначен только для разработки и не должен использоваться в готовых производственных системах (например, системах, имеющих доступ в интернет).
Замечание:
Несмотря на то, что display_errors может быть установлена во время выполнения (функцией ini_set()), это ни на что не повлияет, если в скрипте есть фатальные ошибки. Это обусловлено тем, что ожидаемые действия программы во время выполнения не получат управления (не будут выполняться).
-
display_startup_errors
bool -
Даже если display_errors включена, ошибки, возникающие во время запуска PHP, не будут отображаться. Настойчиво рекомендуем включать директиву display_startup_errors только для отладки.
-
log_errors
bool -
Отвечает за выбор журнала, в котором будут сохраняться сообщения об ошибках. Это может быть журнал сервера или error_log. Применимость этой настройки зависит от конкретного сервера.
Замечание:
Настоятельно рекомендуем при работе на готовых работающих web сайтах протоколировать ошибки там, где они отображаются.
-
log_errors_max_len
int -
Задание максимальной длины log_errors в байтах. В error_log добавляется информация об источнике. Значение по умолчанию 1024. Установка значения в 0 позволяет снять ограничение на длину log_errors. Это ограничение распространяется на записываемые в журнал ошибки, на отображаемые ошибки, а также на $php_errormsg, но не на явно вызываемые функции, такие как error_log().
Если используется int, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ. -
ignore_repeated_errors
bool -
Не заносить в журнал повторяющиеся ошибки. Ошибка считается повторяющейся, если происходит в том же файле и в той же строке, и если настройка ignore_repeated_source выключена.
-
ignore_repeated_source
bool -
Игнорировать источник ошибок при пропуске повторяющихся сообщений. Когда эта настройка включена, повторяющиеся сообщения об ошибках не будут заноситься в журнал вне зависимости от того, в каких файлах и строках они происходят.
-
report_memleaks
bool -
Если настройка включена (по умолчанию), будет формироваться отчет об утечках памяти, зафиксированных менеджером памяти Zend. На POSIX платформах этот отчет будет направляться в поток stderr. На Windows платформах он будет посылаться в отладчик функцией OutputDebugString(), просмотреть отчет в этом случае можно с помощью утилит, вроде » DbgView. Эта настройка имеет смысл в сборках, предназначенных для отладки. При этом
E_WARNING
должна быть включена в список error_reporting. -
track_errors
bool -
Если включена, последняя произошедшая ошибка будет первой в переменной $php_errormsg.
-
html_errors
bool -
Если разрешена, сообщения об ошибках будут включать теги HTML. Фомат для HTML-ошибок производит нажимаемые ссылки, ведущие на описание ошибки, либо функии, в которой она произошла. За такие ссылки ответственны docref_root и docref_ext.
Если запрещена, то ошибки будут выдаваться простым текстом, без форматирования.
-
xmlrpc_errors
bool -
Если включена, то нормальное оповещение об ошибках отключается и, вместо него, ошибки выводятся в формате XML-RPC.
-
xmlrpc_error_number
int -
Используется в качестве значения 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
-
-
syslog.ident
string -
Определяет строку идентификатора, которая добавляется к каждому сообщению. Действует только в том случае, если опция error_log установлена в "syslog".