Поведение функций зависит от установок в файле php.ini.
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
error_reporting | NULL | INI_ALL |
|
display_errors | "1" | INI_ALL |
|
display_startup_errors | "1" | INI_ALL |
До PHP 8.0.0 значение по умолчанию было "0" .
|
log_errors | "0" | INI_ALL |
|
log_errors_max_len | "1024" | INI_ALL |
Не имеет смысла в версии PHP 8.0.0, удалено в версии PHP 8.1.0. |
ignore_repeated_errors | "0" | INI_ALL |
|
ignore_repeated_source | "0" | INI_ALL |
|
report_memleaks | "1" | INI_ALL |
|
track_errors | "0" | INI_ALL |
Объявлено устаревшим в PHP 7.2.0, удалено в PHP 8.0.0. |
html_errors | "1" | INI_ALL |
|
xmlrpc_errors | "0" | INI_SYSTEM |
|
xmlrpc_error_number | "0" | INI_ALL |
|
docref_root | "" | INI_ALL |
|
docref_ext | "" | INI_ALL |
|
error_prepend_string | NULL | INI_ALL |
|
error_append_string | NULL | INI_ALL |
|
error_log | NULL | INI_ALL |
|
error_log_mode | 0o644 | INI_ALL |
Доступно, начиная с PHP 8.2.0 |
syslog.facility | "LOG_USER" | INI_SYSTEM |
Доступно, начиная с PHP 7.3.0. |
syslog.filter | "no-ctrl" | INI_ALL |
Доступно, начиная с PHP 7.3.0. |
syslog.ident | "php" | INI_SYSTEM |
Доступно, начиная с PHP 7.3.0. |
Краткое разъяснение конфигурационных директив.
error_reporting
int
Задаёт уровень протоколирования ошибки. Параметр может быть либо числом, представляющим битовое поле, либо именованной константой. Соответствующие уровни и константы приведены в разделе Предопределённые константы, а также в php.ini. Для установки настройки во время выполнения используйте функцию error_reporting(). Смотрите также описание директивы display_errors.
Значение по умолчанию равно E_ALL
.
До PHP 8.0.0 значение по умолчанию было:
.
При этой настройке не отображаются уровни ошибок E_ALL
&
~E_NOTICE
&
~E_STRICT
&
~E_DEPRECATED
E_NOTICE
,
E_STRICT
и E_DEPRECATED
.
Замечание: PHP-константы за пределами PHP
Использование PHP-констант за пределами PHP, например в файле httpd.conf, не имеет смысла, так как в таких случаях требуются целочисленные значения (int). Более того, с течением времени будут добавляться новые уровни ошибок, а максимальное значение константы
E_ALL
соответственно будет расти. Поэтому в месте, где предполагается указатьE_ALL
, лучше задать большое целое число, чтобы перекрыть все возможные битовые поля. Таким числом может быть, например,2147483647
(оно включит все возможные ошибки, не толькоE_ALL
).
display_errors
string
Эта настройка определяет, требуется ли выводить ошибки на экран вместе с остальным выводом, либо ошибки должны быть скрыты от пользователя.
Значение "stderr"
посылает ошибки в поток stderr
вместо stdout
.
Замечание:
Эта функциональность предназначена только для разработки и не должна использоваться в готовых производственных системах (например, системах, имеющих доступ в интернет).
Замечание:
Несмотря на то, что display_errors может быть установлена во время выполнения (функцией ini_set()), это ни на что не повлияет, если в скрипте есть фатальные ошибки. Это обусловлено тем, что ожидаемые действия программы во время выполнения не получат управления (не будут выполняться).
display_startup_errors
bool
Даже если display_errors включена, ошибки, возникающие во время запуска PHP, не будут отображаться. Настойчиво рекомендуем включать директиву display_startup_errors только для отладки.
log_errors
bool
Указывает, записывать ли сообщения об ошибках скрипта в лог ошибок сервера или в место, которое определяет директива error_log. Место, в которое будут отправляться ошибки, зависит от сервера.
Замечание:
Разработчики, которые серьёзно относятся к безопасности, записывают ошибки в журнал, а не выводят сообщения об ошибках на рабочих сайтах.
log_errors_max_len
int
Устанавливает максимальную длину сообщения об ошибке скрипта в байтах. Логирование ошибок включают директивой log_errors. В журнал ошибок, путь к которому определяет директива error_log, добавляется информация об источнике. Значение по умолчанию равно 1024 байтам, а значение 0 снимает ограничение на длину сообщения. Ограничение длины распространяется на ошибки, которые записываются в журнал ошибок или выводятся на экран, и последнюю ошибку, которую PHP генерирует и записывает в переменную $php_errormsg, но не на явный вызов функций наподобие error_log().
Объём измеряется в байтах, если значение параметра указали как целое число (int). Параметр также принимает значения в сокращённой нотации, которую описывает раздел FAQ.ignore_repeated_errors
bool
Отключает запись в журнал ошибок, которые повторяются. PHP считает ошибку повторной, если она возникает в том же файле и в той же строке, и если включили опцию 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
Строка, которая будет выводиться непосредственно перед сообщением об ошибке. Используется только тогда, когда на экране отображается сообщение об ошибке. Основная цель - добавить дополнительную HTML-разметку к сообщению об ошибке.
error_append_string
string
Строка, которая будет выводиться после сообщения об ошибке. Используется только тогда, когда на экране отображается сообщение об ошибке. Основная цель - добавить дополнительную HTML-разметку к сообщению об ошибке.
error_log
string
Имя файла, в который будут добавляться сообщения об ошибках. Файл
должен быть открыт для записи пользователем веб-сервера. Если
используется специальное значение syslog
, то
сообщения будут посылаться в системный журнал. На Unix-системах это
syslog(3), на Windows NT - журнал событий. Смотрите также: syslog().
Если директива не задана, ошибки будут направляться в SAPI журналы.
Например, это могут быть журналы ошибок Apache или поток
stderr
командной строки CLI.
Смотрите также функцию error_log().
error_log_mode
int
Режим файла, описанного в error_log.
syslog.facility
string
Указывает, какой тип программы регистрирует сообщение. Действует только в том случае, если опция error_log установлена в "syslog".
syslog.filter
string
Указывает тип фильтра для фильтрации регистрируемых сообщений.
Разрешённые символы передаются без изменений; все остальные записываются в шестнадцатеричном представлении с префиксом \x
.
all
– строка будет разделена
на символы новой строки и все символы будут переданы без изменений
ascii
– строка будет разделена
на символы новой строки, а любые непечатаемые 7-битные символы ASCII будут экранированы
no-ctrl
– строка будет разделена
на символы новой строки, а любые непечатаемые символы будут экранированы
raw
– все символы передаются в системный
журнал без изменений, без разделения на новые строки (идентично PHP до 7.3)
Директива не поддерживается в Windows.Замечание:
Тип фильтра
raw
доступен начиная с PHP 7.3.8 и PHP 7.4.0.
syslog.ident
string
Определяет строку идентификатора, которая добавляется к каждому сообщению. Действует только в том случае, если опция error_log установлена в "syslog".