Вывод ошибок в PHP

Каким бы аккуратным и внимательным не был веб-программист, во время его работы возможны ошибки и неточности. В результате это может вылиться в сбои сайта или сервиса. Для отладки во время разработки проекта имеется возможность включить вывод ошибок в PHP.

Как это работает?

PHP безусловно реагирует на тот или иной код скрипта. В одних случаях — выполняя необходимое действие, в других — выводит ошибку. Данный механизм помогает разработчику в момент реализации участка кода оперативно исправлять недочёты.

php вывод ошибок

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

Настройка

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

Классификация исключений

Вывод ошибок в PHP можно условно разделить на несколько категорий:

  • ошибки, в результате которых работа скрипта остановится. Так называемые, фатальные. К ним относятся E_ERROR, E_COMPILE_ERROR;

  • ошибки, которые можно устранить. Их значения для директивы error_reporting могут быть: E_WARNING, E_NOTICE и другие.

Стоит более подробно рассмотреть каждый тип и описать его функционал.

  • E_ERROR. Обычно этот тип ссылается на такие ошибки, которые невозможно оперативно устранить или продолжить выполнение скрипта. Сюда могут входить проблемы с распределением памяти;

  • E_WARNING. Код продолжит свою работу, но будет выведено предупреждение о том, что имеется какая-то ошибка, код которой указывается в сообщении. Не критичны;

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

  • E_USER_ERROR. Ошибки, сгенерированные самим пользователем;

  • E_ALL. Сюда входят все типы ошибок. Как правило, данная опция включена по умолчанию при установке интерпретатора.

Как включить вывод ошибок в PHP

Методика использования механизмов ошибок в PHP может различаться в зависимости от того, где применяется код — на хостинге или на локальном компьютере. Во втором случае разработчик может настроить свой сервер и отображение так, как ему вздумается, а именно — изменить конфигурацию в файле php.ini. Достаточно привести две директивы — display_errors и error_reporting к следующему виду:

display_errors on

error_reporting E_ALL

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

php включить вывод ошибок

Если же разработка проводится на виртуальном хостинге, то чаще всего функция отображения ошибок там отключена в целях безопасности. Поэтому для ее активации потребуется использовать файл настроек сервера Apache htaccess. Обычно он находится в корне сайта. Нужно добавить в него пару строк с помощью любого текстового редактора:

php_flag display_errors on

php_value error reporting -1

Также вывести ошибки можно прямо из кода, используя функцию ini_set(). Однако стоит учитывать, что после окончания разработки сайта ее применение может вызвать проблемы с безопасностью.

php вывод ошибок в файл

Запись в файл

PHP позволяет сохранять все произошедшие ошибки в определённое место на жёстком диске. Для того чтобы включить вывод ошибок PHP в файл, можно использовать три способа:

  1. редактировать файл php.ini. Здесь нужно определить две строки. Первая — log_errors = On, которая, собственно и активирует возможность вывода. Вторая — error_log = путь/к желаемому/файлу.

  2. Изменить htaccess. В него также можно добавить две строчки. php_value log_errors «on» и php_value error_log путь/к файлу.

  3. Использовать в необходимом месте кода функцию ini_set.

Заключение

Вывод ошибок в PHP — необходимый инструмент в отладке кода. Но также он может создать потенциально уязвимые зоны. Поэтому использовать этот механизм нужно внимательно и аккуратно. После того как сайт или сервис прошёл все этапы тестирования, нужно озаботиться тем, чтобы он не отображал ошибок, с помощью которых злоумышленник может получить доступ к важным данным.

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