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

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

Настройки конфигурации протоколирования событий и ошибок
Имя | По умолчанию | Место изменения | Список изменений
--- | --- | --- | ---
error_reporting | NULL | `INI_ALL` |
fatal_error_backtraces | "1" | `INI_ALL` | Доступно, начиная с PHP 8.5.0
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` | Объявлена устаревшей с PHP 8.5.0
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.

Дополнительную информацию и определения режимов INI_* даёт раздел «Места установки параметров конфигурации».

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

`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`, которое установит тридцать одно битовое поле вместо текущих пятнадцати и включит вывод всех текущих и будущих ошибок.

`fatal_error_backtraces` bool
  Определяет, должны ли фатальные ошибки включать обратную трассировку. Фатальными ошибками являются `E_ERROR`, `E_CORE_ERROR`, `E_COMPILE_ERROR`, `E_USER_ERROR`, `E_RECOVERABLE_ERROR` и `E_PARSE`.
`display_errors` string

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

  - `Off` — скрывать ошибки.
  - `On` или `stdout` — выводить ошибки в поток `stdout`. Это значение по умолчанию.
  - `stderr` — выводить ошибки в поток `stderr`. Вывод ошибок в стандартный поток ошибок полезен только при работе с SAPI-интерфейсами `CLI`, `phpdbg` и `CGI`.
  В файлах конфигурации, которые входят в дистрибутив PHP, для директивы устанавливаются следующие значения: в `php.ini-development` — `On`; в `php.ini-production` — `Off`.

  > Замечание: Вывод ошибок включают только в целях разработки. В производственных системах с доступом к интернету вывод ошибок включать нельзя.

  > Замечание:

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

`display_startup_errors` bool

  Настройка управляет выводом ошибок, которые возникают на этапе запуска PHP; директива display_errors не влияет на вывод ошибок инициализации. Директиву 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.
  Внимание

  Начиная с PHP 8.5.0 функциональность УСТАРЕЛА. Полагаться на функциональность настоятельно не рекомендуют.

`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)
  Параметр влияет на ведение журнала через error_log установленного в "syslog" и вызовы syslog().

  > Замечание:

  > Тип фильтра `raw` доступен начиная с PHP 7.3.8 и PHP 7.4.0.

  Директива не поддерживается в Windows.
`syslog.ident` string

  Определяет строку идентификатора, которая добавляется к каждому сообщению. Действует только в том случае, если опция error_log установлена в "syslog".

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open