PHP Функції помилки
PHP Error / Помилка. Інтро
Функції помилок використовуються для обробки та реєстрації помилок.
Функції помилок дозволяють нам визначати власні правила обробки помилок і змінювати спосіб реєстрації помилок.
Функції журналювання дозволяють нам надсилати повідомлення безпосередньо на інші машини, електронні листи чи системні журнали.
Функції звітування про помилки дозволяють нам налаштувати рівень і тип відгуку про помилку.
Інсталяція
Функції помилок PHP є частиною ядра PHP. Для використання цих функцій не потрібна установка.
Конфігурація середовища виконання
На поведінку функцій помилок впливають налаштування у php.ini.
Помилки та параметри конфігурації журналу:
| Назва | За замовчуванням | Опис | Змінний |
|---|---|---|---|
| error_reporting | NULL | Встановлює рівень повідомлення про помилки (ціле число або іменовані константи) | PHP_INI_ALL |
| display_errors | "1" | Визначає, чи слід друкувати помилки на екрані чи приховувати їх від користувача. Примітка: цю функцію ніколи не слід використовувати на робочих системах (лише для підтримки вашої розробки) |
PHP_INI_ALL |
| display_startup_errors | "0" | Навіть якщо display_errors увімкнено, помилки, які виникають під час послідовності запуску PHP, не відображаються. Примітка: наполегливо рекомендується не відключати display_startup_errors, за винятком налагодження |
PHP_INI_ALL |
| log_errors | "0" | Визначає, чи слід записувати повідомлення про помилки сценарію в журнал помилок сервера чи error_log. Примітка. Наполегливо рекомендується використовувати журнал помилок замість відображення помилок на робочих веб-сайтах |
PHP_INI_ALL |
| log_errors_max_len | "1024" | Встановлює максимальну довжину log_errors у байтах. Значення "0" можна використовувати, щоб взагалі не застосовувати будь-яку максимальну довжину. Ця довжина застосовується до зареєстрованих помилок, відображених помилок, а також до $php_errormsg (доступно з PHP 4.3) | PHP_INI_ALL |
| ignore_repeated_errors | "0" | Визначає, чи реєструвати повторювані повідомлення про помилки. Якщо встановлено значення "1" він не буде реєструвати помилки з повторюваними помилками з того самого файлу в тому самому рядку (доступно з PHP 4.3) | PHP_INI_ALL |
| ignore_repeated_source | "0" | Визначає, чи реєструвати повторювані повідомлення про помилки. Якщо встановлено значення "1" він не буде реєструвати помилки з повторюваними помилками з різних файлів або вихідних рядків (доступно з PHP 4.3) | PHP_INI_ALL |
| report_memleaks | "1" | Якщо встановлено "1" (за замовчуванням), цей параметр відображатиме звіт про витоки пам’яті, виявлені менеджером пам’яті Zend (доступний з PHP 4.3) | PHP_INI_ALL |
| track_errors | "0" | Якщо встановлено значення "1", останнє повідомлення про помилку завжди буде присутнім у змінній $php_errormsg | PHP_INI_ALL |
| html_errors | "1" | Вимикає теги HTML у повідомленнях про помилки | PHP_INI_ALL PHP_INI_SYSTEM in PHP <= 4.2.3. |
| xmlrpc_errors | "0" | Вимикає звичайні звіти про помилки та форматує помилки як повідомлення про помилку XML-RPC (доступно з PHP 4.1) | PHP_INI_SYSTEM |
| xmlrpc_error_number | "0" | Використовується як значення елемента XML-RPC faultCode (доступний, починаючи з PHP 4.1) | PHP_INI_ALL |
| docref_root | "" | (доступний, починаючи з PHP 4.3) | PHP_INI_ALL |
| docref_ext | "" | (доступний, починаючи з PHP 4.3.2) | PHP_INI_ALL |
| error_prepend_string | NULL | Визначає рядок для виведення перед повідомленням про помилку | PHP_INI_ALL |
| error_append_string | NULL | Визначає рядок для виведення після повідомлення про помилку | PHP_INI_ALL |
| error_log | NULL | Вказує ім’я файлу, куди повинні записуватися помилки скрипту. Файл має бути доступним для запису користувачем вебсервера. Якщо використовується спеціальне значення syslog, помилки надсилаються до системного реєстратора | PHP_INI_ALL |
PHP Функції реєстрації помилок і журналювання
| Функція | Опис |
|---|---|
| debug_backtrace() | Створює зворотне трасування |
| debug_print_backtrace() | Друкує зворотне трасування |
| error_clear_last() | Очищає останню помилку |
| error_get_last() | Повертає останню помилку, яка сталася |
| error_log() | Надсилає повідомлення про помилку в журнал, файл або обліковий запис електронної пошти |
| error_reporting() | Визначає, про які помилки повідомляється |
| restore_error_handler() | Відновлює попередній обробник помилок |
| restore_exception_handler() | Відновлює попередній обробник винятків |
| set_error_handler() | Встановлює визначену користувачем функцію обробки помилок |
| set_exception_handler() | Встановлює визначену користувачем функцію обробки винятків |
| trigger_error() | Створює повідомлення про помилку на рівні користувача |
| user_error() | Псевдонім trigger_error() |
PHP Попередньо визначені константи помилок і журналювання
| Значення | Константа | Опис |
|---|---|---|
| 1 | E_ERROR | Фатальні помилки під час виконання. Помилки, які неможливо виправити. Виконання сценарію зупинено |
| 2 | E_WARNING | Попередження під час виконання (нефатальні помилки). Виконання скрипту не зупинено |
| 4 | E_PARSE | Помилки аналізу під час компіляції. Помилки аналізу повинні генеруватися лише синтаксичним аналізатором |
| 8 | E_NOTICE | Повідомлення під час виконання. Скрипт виявив щось, що може бути помилкою, але також може статися під час нормального виконання скрипту |
| 16 | E_CORE_ERROR | Фатальні помилки під час запуску PHP. Це схоже на E_ERROR, за винятком того, що воно генерується ядром PHP |
| 32 | E_CORE_WARNING | Нефатальні помилки під час запуску PHP. Це як E_WARNING, за винятком того, що воно генерується ядром PHP |
| 64 | E_COMPILE_ERROR | Фатальні помилки під час компіляції. Це схоже на E_ERROR, за винятком того, що її генерує Zend Scripting Engine |
| 128 | E_COMPILE_WARNING | Нефатальні помилки під час компіляції. Це схоже на E_WARNING, за винятком того, що воно генерується Zend Scripting Engine |
| 256 | E_USER_ERROR | Критична помилка, створена користувачем. Це схоже на E_ERROR, за винятком того, що воно генерується в коді PHP за допомогою PHP функції trigger_error() |
| 512 | E_USER_WARNING | Нефатальне попередження, створене користувачем. Це схоже на E_WARNING, за винятком того, що воно генерується в коді PHP за допомогою PHP функції trigger_error() |
| 1024 | E_USER_NOTICE | Сповіщення, створене користувачем. Це схоже на E_NOTICE, за винятком того, що воно генерується в коді PHP за допомогою PHP функції trigger_error() |
| 2048 | E_STRICT | Увімкніть, щоб PHP пропонував зміни до вашого коду, що забезпечить найкращу сумісність і пряму сумісність вашого коду (починаючи з PHP 5, але не включено в E_ALL до PHP 5.4) |
| 4096 | E_RECOVERABLE_ERROR | Фатальна помилка, яку можна вловити. Вказує на те, що ймовірно небезпечна помилка сталася, але не залишила двигун у нестабільному стані. Якщо помилка не виявлена визначеним користувачем описом, програма переривається, оскільки це була E_ERROR (починаючи з PHP 5.2) |
| 8192 | E_DEPRECATED | Повідомлення під час виконання. Увімкніть це, щоб отримувати попередження про код, який не працюватиме в майбутніх версіях (починаючи з PHP 5.3) |
| 16384 | E_USER_DEPRECATED | Попередження, створене користувачем. Це схоже на E_DEPRECATED, за винятком того, що воно генерується в коді PHP за допомогою PHP функції trigger_error() (починаючи з PHP 5.3) |
| 32767 | E_ALL | Увімкнути всі помилки та попередження PHP (крім E_STRICT у версіях < 5.4) |

