Налаштування під час виконання
Поведінка цих функцій залежить від установок у 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. |
Додаткова інформація та опис режимів 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
(воно включить усі можливі помилки, не тільки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. Застосовність цього параметра залежить від конкретного сервера.
Зауваження :
Рекомендуємо при роботі на готових працюючих 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=.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_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".