Error_ reporting: что такое

Вывод сообщений об ошибках в PHP можно настроить несколькими способами. Это позволяет разработчику видеть возникающие проблемы и оперативно их исправлять. Однако на рабочем проекте показывать ошибки конечным пользователям нежелательно по соображениям безопасности.

В статье мы рассмотрим основные способы вывода ошибок и предупреждений в PHP и записи их в лог-файл. Также дадим рекомендации по оптимальной конфигурации в зависимости от этапа разработки.

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

Отображение ошибок в PHP можно настроить разными способами. Во-первых, есть глобальные настройки в php.ini, которые определяют поведение по умолчанию. Например, директивы display_errors и display_startup_errors регулируют вывод ошибок.

Во-вторых, настройки php.ini можно переопределить в runtime с помощью функции ini_set(). Это позволяет включить вывод ошибок только для определенного скрипта.

ini_set('display_errors', 1);

В-третьих, есть функция error_reporting(), которая принимает битовую маску ошибок для вывода. Можно указать константы типа E_ERROR или E_ALL.

В-четвертых, вывод ошибок можно настроить в .htaccess для проектов на Apache/Nginx. Это альтернатива изменению php.ini.

Таким образом, есть несколько вариантов гибкой настройки error reporting в runtime в зависимости от потребностей.

Код PHP с функциями для включения отображения ошибок во время выполнения

Вывод ошибок и предупреждений в лог-файлы

Помимо вывода ошибок на экран, важно записывать их в лог-файлы. Это позволяет анализировать возникающие проблемы и отлаживать приложение.

В PHP для логирования ошибок есть несколько вариантов:

  • Функция error_log. Можно указать файл для записи или отправить лог по email.
  • Настройка error_log в конфиге веб-сервера (Apache, Nginx).
  • Библиотеки логирования, например, Monolog.

Что логировать, контролируется через error_reporting и уровни ошибок. Например, можно игнорировать notice, но писать в лог warning и выше.

Рекомендуется настраивать разные лог-файлы для разных типов ошибок. Критичные ошибки можно отправлять по email. Также важно позаботиться о ротации и очистке логов.

Таким образом, логирование ошибок - важный инструмент отладки и мониторинга приложений на PHP при правильной настройке error reporting.

Рекомендуемые параметры для разных этапов разработки

Настройки error reporting должны меняться на разных этапах разработки и эксплуатации приложения.

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

На тестовом сервере стоит скрывать notice, но оставить warning и ошибки. Например, E_ALL & ~E_NOTICE.

На боевом production сервере обычно выводятся только критические ошибки - E_ERROR. Все остальное логируется.

Также в production часто используют отладочные флаги или переменные окружения, чтобы выводить ошибки только для разработчиков.

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

Логи ошибок отображаются на экране среды разработки

Создание пользовательских сообщений об ошибках в коде

PHP позволяет не только перехватывать и логировать ошибки, но и создавать пользовательские сообщения об ошибках прямо в коде.

Для этого используется функция trigger_error(). Она принимает сообщение об ошибке и ее уровень (E_USER_ERROR, E_USER_WARNING и т.д.).

trigger_error('Custom error message', E_USER_ERROR);

Такие пользовательские ошибки позволяют указывать в коде важные условия и возможные проблемы, о которых нужно предупредить разработчика.

Например, проверка входных данных из недоверенных источников:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { trigger_error('Invalid email address', E_USER_WARNING); }

Или валидация критичных параметров:

if ($orderTotal < 0) { trigger_error('Negative order total', E_USER_ERROR); }

С помощью пользовательских ошибок и правильной настройки error reporting можно существенно улучшить процесс отладки и повысить стабильность приложения.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.