Налаштування під час виконання

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

Налаштування конфігурації протоколювання подій та помилок

ИмяПо умолчаниюМесто измененияСписок изменений
error_reportingNULLINI_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_stringNULLINI_ALL
error_append_stringNULLINI_ALL
error_logNULLINI_ALL
error_log_mode0o644INI_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_reportingint

Визначає рівень протоколювання помилки. Параметр може бути чисельністю, що представляє бітове поле, чи іменованою константою. Відповідні рівні та константи наведено у розділі Обумовлені константи , а також у 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_errorsstring

Ця установка визначає, чи потрібно виводити помилки на екран разом з іншим виводом, чи помилки повинні бути приховані від користувача.

Значение"stderr" посилає помилки в потік stderr замість stdout

Зауваження :

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

Зауваження :

Незважаючи на те, що display_errors може бути встановлена ​​під час виконання (функцією ini_set()), це ні на що не вплине, якщо у скрипті є фатальні помилки. Це пов'язано з тим, що очікувані дії програми під час виконання не отримають управління (не виконуватимуться).

display_startup_errorsbool

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

log_errorsbool

Відповідає за вибір журналу, де зберігатимуться повідомлення про помилки. Це може бути журнал сервера або error_log. Застосовність цього параметра залежить від конкретного сервера.

Зауваження :

Рекомендуємо при роботі на готових працюючих web сайтах протоколювати помилки там, де вони відображаються.

log_errors_max_lenint

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

Якщо вказано ціле значення (int), обсяг вимірюється байтами. Можна також використовувати скорочений запис, який описано в у цьому розділі FAQ

ignore_repeated_errorsbool

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

ignore_repeated_sourcebool

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

report_memleaksbool

Якщо налаштування увімкнено (за замовчуванням), буде формуватися звіт про витік пам'яті, зафіксований менеджером пам'яті Zend. На POSIX платформах цей звіт надсилатиметься в потік stderr. На Windows платформах він надсилатиметься в налагоджувач функцією OutputDebugString(), переглянути звіт у цьому випадку можна за допомогою утиліт, начебто » DbgView. Ця настройка має сенс у збираннях, призначених для налагодження. При цьому E_WARNING повинна бути включена до списку error_reporting.

track_errorsbool

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

html_errorsbool

Якщо дозволено, повідомлення про помилки включатимуть теги HTML. Формат для HTML-помилок робить посилання, що натискаються, що ведуть на опис помилки, або функції, в якій вона відбулася. За такі посилання відповідальні docref_root і docref_ext

Якщо заборонено, то помилки видаватимуться простим текстом, без форматування.

xmlrpc_errorsbool

Якщо увімкнено, то нормальне сповіщення про помилки відключається і замість нього помилки виводяться у форматі XML-RPC.

xmlrpc_error_numberint

Використовується як значення XML-RPC елемента faultCode.

docref_rootstring

Новий формат помилок містить посилання на сторінку з описом помилки або функції, що спричинила цю помилку. Можна розмістити копію описів помилок і функцій локально і задати ini директиві значення URL цієї копії. Якщо, наприклад, локальна копія описів доступна за адресою "/manual/", достаточно прописать**docref_root=/manual/**Дополнительно, необходимо задать значение директиве docref_ext, що відповідає за відповідність розширень файлів файлам описів вашої локальної копії, docref_ext=.md. Також можливе використання зовнішніх посилань. Наприклад, 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_extstring

Смотритеdocref_root

Зауваження :

Значення docref_ext має починатися з точки "."

error_prepend_stringstring

Рядок, який буде виводитися безпосередньо перед повідомленням про помилку. Використовується лише тоді, коли на екрані з'являється повідомлення про помилку. Основна мета – додати додаткову HTML-розмітку до повідомлення про помилку.

error_append_stringstring

Рядок, який виводиться після повідомлення про помилку. Використовується лише тоді, коли на екрані з'являється повідомлення про помилку. Основна мета – додати додаткову HTML-розмітку до повідомлення про помилку.

error_logstring

Ім'я файлу, до якого будуть додаватися повідомлення про помилки. Файл повинен бути відкритим для запису користувача веб-сервера. Якщо використовується спеціальне значення syslog, то повідомлення будуть надсилатися до системного журналу. На Unix-системах це syslog(3), Windows NT - журнал подій. Дивіться також: syslog(). Якщо директива не задана, помилки будуть надсилатися до журналів SAPI. Наприклад, це можуть бути журнали помилок Apache або потік stderr командний рядок CLI. Також дивіться функцію error_log()

error_log_modeint

Режим файла, описанного вerror_log

syslog.facilitystring

Вказує, який тип програми реєструє повідомлення. Діє лише у тому випадку, якщо опція error_log встановлена ​​в "syslog".

syslog.filterstring

Вказує тип фільтра для фільтрації повідомлень, що реєструються. Дозволені символи передаються без змін; всі інші записуються в шістнадцятковому поданні з префіксом \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.identstring

Визначає рядок ідентифікатора, який додається до кожного повідомлення. Діє лише у тому випадку, якщо опція error_log встановлена ​​в "syslog".