PHP Ошибки и ведение журналаФункции


Введение в обработку ошибок и ведение журнала PHP

Функции обработки ошибок и ведения журнала позволяют обрабатывать и записывать ошибки.

Функции обработки ошибок позволяют пользователям определять правила обработки ошибок и изменять способ регистрации ошибок.

Функции ведения журнала позволяют пользователям регистрировать активность приложения и отправлять сообщения журнала по электронной почте, в системные журналы или на другие машины.


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

На функции обработки ошибок влияет файл конфигурации php.ini.

Параметры конфигурации обработки ошибок и ведения журнала:

Параметр Значение по умолчанию Описание Изменяемый
error_reporting NULL Устанавливает уровень отчетности об ошибках PHP и возвращает текущий уровень (числовой или константный). PHP_INI_ALL
display_errors "1" Эта опция определяет, отображаются ли сообщения об ошибках как часть вывода на экране или скрываются от пользователя.
Примечание:Эту возможность не следует использовать в рабочей среде (используйте её во время разработки и тестирования).
PHP_INI_ALL
display_startup_errors "0" Даже если display_errors включён, сообщения об ошибках во время запуска PHP отображаться не будут. Настоятельно рекомендуется устанавливать display_startup_errors в off, кроме случаев отладки. PHP_INI_ALL
log_errors "0" Определяет, записывать ли ошибки времени выполнения скрипта в серверный журнал ошибок или в error_log. Обратите внимание, что это конфигурационная опция, зависящая от сервера. PHP_INI_ALL
log_errors_max_len "1024" Устанавливает максимальное количество байт для log_errors. Информация об источнике ошибки добавляется в error_log. По умолчанию — 1024. Если установлено 0, это означает неограниченную длину. Эта настройка длины применяется к регистрируемым ошибкам, отображаемым ошибкам и $php_errormsg. PHP_INI_ALL
ignore_repeated_errors "0" Не регистрировать повторяющиеся сообщения. Повторяющиеся ошибки должны возникать в одной и той же строке кода в одном и том же файле, если только ignore_repeated_source не установлен в true. PHP_INI_ALL
ignore_repeated_source "0" При игнорировании повторяющихся сообщений также игнорируется источник сообщения. Если этот параметр включён, повторяющиеся сообщения не будут записывать, были ли они сгенерированы разными файлами или разными строками исходного кода. PHP_INI_ALL
report_memleaks "1" Если этот параметр установлен в Off, информация об утечках памяти не будет отображаться (в stdout или в журнале). PHP_INI_ALL
track_errors "0" Если включено, последняя ошибка всегда будет присутствовать в переменной $php_errormsg. PHP_INI_ALL
html_errors "1" Отключить HTML-теги в сообщениях об ошибках. PHP_INI_ALL
PHP_INI_SYSTEM в PHP <= 4.2.3.
xmlrpc_errors "0" Отключает обычный вывод ошибок и форматирует ошибки как сообщения об ошибках XML-RPC. PHP_INI_SYSTEM
xmlrpc_error_number "0" Используется в качестве значения элемента faultCode XML-RPC. PHP_INI_ALL
docref_root "" Новый формат сообщения об ошибке включает соответствующую справочную страницу, которая специально описывает ошибку или описывает функцию, вызвавшую ошибку.
Чтобы предоставить страницы руководства, вы можете скачать руководство на соответствующем языке с официального сайта PHP и установить URL в ini на соответствующий локальный адрес.
Если к вашей локальной копии руководства можно получить доступ через "/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"
PHP_INI_ALL
docref_ext "" См. docref_root. PHP_INI_ALL
error_prepend_string NULL Содержимое для вывода перед сообщением об ошибке. PHP_INI_ALL
error_append_string NULL Содержимое для вывода после сообщения об ошибке. PHP_INI_ALL
error_log NULL Задаёт файл, в который будут записываться ошибки скрипта. Этот файл должен быть доступен для записи пользователю веб-сервера. PHP_INI_ALL

Установка

Функции обработки ошибок и ведения журнала являются частью ядра PHP. Для использования этих функций установка не требуется.


Функции обработки ошибок и логирования PHP

PHP: Указывает самую раннюю версию PHP, поддерживающую эту функцию.

Функция Описание PHP
debug_backtrace() Создаёт обратную трассировку. 4
debug_print_backtrace() Выводит обратную трассировку. 5
error_get_last() Получает последнюю возникшую ошибку. 5
error_log() Отправляет ошибку в журнал ошибок сервера, в файл или на удалённый адресат. 4
error_reporting() Указывает, какие ошибки выводятся. 4
restore_error_handler() Восстанавливает предыдущий обработчик ошибок. 4
restore_exception_handler() Восстанавливает предыдущий обработчик исключений. 5
set_error_handler() Устанавливает пользовательскую функцию обработки ошибок. 4
set_exception_handler() Устанавливает пользовательскую функцию обработки исключений. 5
trigger_error() Создаёт пользовательское сообщение об ошибке. 4
user_error() Псевдоним trigger_error(). 4


Константы ошибок и логирования PHP

PHP: Указывает самую раннюю версию PHP, поддерживающую эту константу.

Значение Константа Описание PHP
1 E_ERROR Фатальная ошибка во время выполнения. Ошибка, которую нельзя исправить. Останавливает выполнение скрипта.
2 E_WARNING Нефатальная ошибка во время выполнения. Не останавливает выполнение скрипта.
4 E_PARSE Ошибка синтаксического анализа во время компиляции. Ошибки синтаксического анализа должны генерироваться только парсером.
8 E_NOTICE Уведомление во время выполнения. Скрипт обнаруживает что-то, что может быть ошибкой, но это также может происходить при нормальной работе скрипта.
16 E_CORE_ERROR Фатальная ошибка при запуске PHP. Это похоже на E_ERROR из ядра PHP. 4
32 E_CORE_WARNING Нефатальная ошибка при запуске PHP. Это похоже на E_WARNING из ядра PHP. 4
64 E_COMPILE_ERROR Фатальная ошибка во время компиляции. Это похоже на E_ERROR, сгенерированную движком Zend Script Engine. 4
128 E_COMPILE_WARNING Нефатальная ошибка во время компиляции. Это похоже на E_WARNING, сгенерированную движком Zend Script Engine. 4
256 E_USER_ERROR Фатальная ошибка, сгенерированная пользователем. Это похоже на E_ERROR, сгенерированную программистом с помощью функции PHP trigger_error(). 4
512 E_USER_WARNING Нефатальная ошибка, сгенерированная пользователем. Это похоже на E_WARNING, сгенерированную программистом с помощью функции PHP trigger_error(). 4
1024 E_USER_NOTICE Уведомление, сгенерированное пользователем. Это похоже на E_NOTICE, сгенерированное программистом с помощью функции PHP trigger_error(). 4
2048 E_STRICT Уведомление во время выполнения. PHP рекомендует изменить ваш код для улучшения взаимодействия и совместимости. 5
4096 E_RECOVERABLE_ERROR Перехватываемая фатальная ошибка. Это похоже на E_ERROR, которая может быть перехвачена пользовательским обработчиком (см. set_error_handler()). 5
6143 E_ALL Все уровни ошибок и предупреждений, кроме E_STRICT (начиная с PHP 6.0, E_STRICT будет частью E_ALL). 5
Другие расширения