Включение отображения ошибок php

Включение отображения ошибок в PHP-скриптах может потребоваться для отладки сайта.

За протоколирование и уровень обработки ошибок в PHP отвечают директивы display_errors и error_reporting .

  • Директива display_errors определяет, требуется ли выводить ошибки на экран вместе с остальным выводом.
  • Директива error_reporting задает уровень протоколирования ошибок, т.е. какие именно ошибки и предупреждения PHP выводить.

Из соображений безопасности на серверах виртуального хостинга вывод ошибок PHP выключен.
В случае, если PHP для Вашего сайта подключен как модуль Apache (этот способ используется на хостинге по умолчанию), то для вывода всех поддерживаемых ошибок и предупреждений достаточно добавить строки

в файл с именем .htaccess, размещающийся в папке public_html сайта.

Отредактировать файл можно, например, в разделе «Файловый менеджер» .
Если файла .htaccess нет, то его следует создать.

После включения вывода ошибок необходимо повторить заход на сайт, либо обновить страницу, нажав F5 в браузере. На странице должна отобразиться отладочная информация, доступная по сайту.

Следует иметь в виду, что если в скриптах сайта перед именами функций присутствует оператор подавления ошибок (символ ‘@’), то несмотря на прописанные в .htaccess директивы, вывод ошибок производиться не будет.

Дополнительная информация

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

Параметры, заданные с помощью функции ini_set(), имеют более высокий приоритет и перекрывают директивы php.ini и .htaccess.

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

Не нашли ответ на свой вопрос? Позвоните нашим специалистам по бесплатному телефону 8-800-100-16-15.

При отладке скриптов на PHP обычное дело заполучить в браузере «белый экран». Что в большинстве случаев говорит об остановке выполнения PHP кода из-за ошибки. PHP интерпретатор позволяет выводить служебную информацию об ошибках на экран, что существенно облегчает отладку. Но по-умолчанию (в большинстве случаев) такое поведение из соображений безопасности отключено, то есть сообщения об ошибках PHP на экран не выводятся.

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

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

Включение вывода ошибок PHP на экран с помощью файла .htaccess

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

  • display_errors — включает опцию для вывода ошибок на экран вместе с остальным кодом.
  • display_startup_errors — включает опцию вывода ошибок, возникающих при запуске PHP, когда еще не работает директива display_errors.
  • error_reporting — указывает, какие ошибки выводятся по уровню значимости. При значении директивы E_ALL отображаются все ошибки.

Включение вывода ошибок PHP на экран в коде файла PHP

Этот способ удобен тем, что выводом ошибок на экран вы управляете в самом скрипте PHP. Параметры, заданные с помощью функции ini_set(), имеют более высокий приоритет и перекрывают директивы php.ini и .htaccess. Разместите следующий код в начале PHP файла:

Включение вывода ошибок PHP на экран с помощью файла php.ini

Этот способ актуален когда вы являетесь администратором сервера. В файле php.ini отредактируйте следующие строки (добавьте при необходимости):

Лучший способ вывода PHP ошибок на экран

На мой взгляд обычному пользователю удобнее всего использовать .htaccess, особенно если у вас больше чем один PHP файл. Способ №2 удобен для отладки одного php файла, чтобы не затрагивать уровень вывода ошибок для других php скриптов. Вариант с php.ini подойдет только администраторам сервера, но зато его действие распространяется на все сайты расположенные на данном сервере.

Благодарности

При написании статьи были использованы следующие источники:


Часто слышал о такой проблеме от других пользователей. Одним из-за хостера нужно скрыть появляющиеся ошибки, другим наоборот – понять, что происходит с их кодом, потому что ни одна ошибка не показывается. В этой статье постараюсь показать все основные способы отобразить / скрыть ошибки.

В скрипте PHP

1) В PHP есть всего лишь один оператор, который поддерживает систему управления ошибками – это знак @. Он позволяет проигнорировать сообщение любое сообщение об ошибке. Его нужно ставить ПЕРЕД выражением, которое может её содержать.

В примере специально допущена ошибка, но она НЕ будет отображена

2) Также можно перед проверяемым скриптом PHP можно вставить настройку параметра отображения ошибок (display_errors). Он может приобретать значение либо On (показывать), либо Off (скрыть).

И соответственно после кода, который проверялся на ошибки, выставить параметр обратно.

Например, Вы хотите увидеть ошибки в скрипте

Можно выставить наоборот (в верхнем off, а в нижнем on), чтобы в конкретном отрезке кода ошибки НЕ отображались.

В файле .htaccess

Чаще всего проблему решают именно указанием настроек в файле .htaccess, который располагается в корневой директории сайта. В строке php_flag display_errors нужно также выставить On или Off

Если Вам нужно работать с конкретным типом ошибок, то привожу основные их виды:

E_ALL – все ошибки
E_ERROR – ошибки функций (критические)
E_WARNING – предупреждения
E_PARSE – ошибки синтаксиса
E_NOTICE – замечания (ненормальный код – кодировка и тп)
E_CORE_ERROR – ошибка обработчика
E_CORE_WARNING – предупреждения обработчика
E_COMPILE_ERROR – ошибка компилятора
E_COMPILE_WARNING – предупреждение компилятора
E_USER_ERROR – ошибка пользователей
E_USER_WARNING – предупреждение пользователей
E_USER_NOTICE – уведомления пользователей

В файле php.ini

Как видите, параметр можно указать в нескольких местах. Однако, если у Вы хотите, чтобы целиком на сайте этот параметр имел определённое значение, то проще выставить его в файле php.ini.(к нему на хостинге не всегда может быть доступ), но в этом случае можно будет даже обойти настройки всего хостинга

В php.ini:

В верхней строке выбираем все виды ошибок, в нижней даём добро на их отображение.

После правок необходимо перезапустить Apache, чтобы настройки были изменены и вступили в силу (graceful или restart):

В каком порядке обрабатывается параметр ошибок

В самом начале учитывается параметр php.ini , затем .htaccess , а после то, что указано непосредственно в скрипте PHP. Так что если что-то не сработало, то смотрим по цепочку выше, возможно, там настройка другая.

Как обычно спасибо за внимание и удачи! Надеюсь статья была полезна!

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Adblock detector