Как настроить вывод ошибок php в браузере. Способы отображения и сокрытия сообщений об ошибках php.

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


Для управления выводом ошибок php необходимо внести изменения в файл настроек «php.ini» (после внесения изменений нужно перезагрузить http сервер) или воспользоваться функцией «error_reporting()«. Вот список констант, которые определяют уровень вывода сообщений об ошибках:

E_ERROR — сообщения о неисправимых ошибках времени выполнения (имеется в виду отсутствии каких-нибудь данных, на которые ссылается скрипт, например отсутствие подключаемого файла);
E_WARNING — сообщения об исправимых ошибках времени выполнения;
E_PARSE — сообщения об ошибках синтаксического анализатора;
E_NOTICE — уведомления и предупреждения о том, что выполненные действия могут быть ошибочными;
E_CORE_ERROR — сообщения о сбоях запуска механизма PHP;
E_CORE_WARNIGN — сообщения об исправимых ошибках в процессе запуска механизма PHP;
E_COMPILE_ERROR — сообщения об ошибках компиляции;
E_COMPILE_WARNIGN — сообщения об исправимых ошибках компиляции;
E_USER_ERROR — сообщения об ошибках, сгенерированных пользователем;
E_USER_WARNING — сообщения о предупреждениях, сгенерированных пользователем;
E_USER_NOTICE — сообщения об уведомлениях, сгенерированных пользователем;
E_ALL — сообщениях обо всех ошибках и предупреждениях;
E_STRICT — сообщения об использовании устаревших и не рекомендуемых функциях (не включено в E_ALL, но полезно при модификации кода).

По умолчанию установлены вот эти две константы: «E_ALL & ~E_NOTICE» («&» — обозначает «И», «~» — обозначает «НЕ»). Используя константы приведенные выше, мы может подгонять под свои нужды работу системы вывода ошибок в php. Теперь, когда мы научились создавать правила вывода ошибок php, попробуем применить наши знания на практике. Как писалось выше это можно сделать двумя основными способами (можно еще через htaccess, но описание этого файла я оставлю для другой статьи): через редактировани файла php.ini, он обычно находится в корневой дирректории php и через использование стандартной функции «error_reporting()».

Сначала давайте пойдем первым путем и изменим файл «php.ini». Для этого найдите в нем строчку «error_reporting = E_ALL & ~E_NOTICE» и измените «E_ALL & ~E_NOTICE» на требуемую константу, например на «E_PARSE», после чего у нас получится вот что: «error_reporting = E_PARSE». После этого сохраните изменения в файле и перезапустите http-сервер. Теперь ошибки php будут выводится в соответствии с вашими требованиями.

Кроме «error_reporting» в php.ini находится еще три интересующие нас настройки:

display_errors — направление сообщений об ошибках в виде HTML-кода на стандартное устройство вывода;
log_errors — протоколирование сообщений на диске;
track_errors — отсутствие отслеживания ошибок, сохранение сообщений в переменной $php_errormsg.

Каждая из этих трех настроек может принимать значения «on» и «off» (включить/выключить).

Теперь рассмотрим второй способ изменения вывода ошибок php — использование функции «error_reporting()«. Эту функцию можно вызывать точно также, как и любую другую:
<?php
error_reporting(E_PARSE);
?>


Для меня второй вариант предпочтительнее, т.к. не хочется постоянно лезть в файлы настроек php и потом перезагружать сервер. Кроме этого использование «error_reporting()» позволяет изменять систему вывода ошибок php только в том месте, где действует функция «error_reporting()», т.е. в определенном скрипте, а когда вы редактируете файл «php.ini», настройки меняются для всего сайта (и для всех остальных скриптов, которые расположены на сервере).

Небольшой совет: отлючайте все виды вывода ошибок php по завершении разработки и отладки вашего приложения, т.к. пользователи очень плохо реагируют на всякие предупреждающие сообщения и ошибки.

Вывод ошибок php, error_reporting, php.ini.

8 комментариев

Оставить комментарий

Комментировать при помощи:
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.