Андрей Смирнов
Время чтения: ~7 мин.
Просмотров: 15

PHP: Включаем вывод ошибок или отключаем его (htaccess, php.ini, code)

1373032701.jpg Автор: Никита Иванов | 20 июня 2013 18:26

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

В скрипте PHP

1) В PHP есть всего лишь один оператор, который поддерживает систему управления ошибками — это знак @. Он позволяет проигнорировать сообщение любое сообщение об ошибке. Его нужно ставить ПЕРЕД выражением, которое может её содержать. В примере специально допущена ошибка, но она НЕ будет отображена2) Также можно перед проверяемым скриптом PHP можно вставить настройку параметра отображения ошибок (display_errors). Он может приобретать значение либо On (показывать), либо Off (скрыть). И соответственно после кода, который проверялся на ошибки, выставить параметр обратно. Например, Вы хотите увидеть ошибки в скрипте Можно выставить наоборот (в верхнем off, а в нижнем on), чтобы в конкретном отрезке кода ошибки НЕ отображались.

В файле .htaccess

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

pencil.png Если Вам нужно работать с конкретным типом ошибок, то привожу основные их виды: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. Так что если что-то не сработало, то смотрим по цепочку выше, возможно, там настройка другая. Как обычно спасибо за внимание и удачи! Надеюсь статья была полезна!

Способ 1: Использование файла .htaccess Для этого откройте файл .htaccess который располагается в корне Вашего сайта (если его нет, то создайте его). И добавьте в него следующие строчки:

  php_flag display_startup_errors on  php_flag display_errors on  php_flag html_errors on  

Если Вам нужно отключить вывод ошибок — замените слово on на off.

Способ 2: С помощью PHP кода Вы можете включать или отключать вывод ошибок в определенных файлах с помощью вызова PHP функций.

  error_reporting(E_ALL); //вывод всех ошибок  error_reporting(0); //отключение ошибок  error_reporting(E_ALL & ~E_NOTICE); //вывод ошибок, но не предупреждений типа Notice  

Все возможные аргументы Вы можете найти в документации на сайта php.net. Иногда так же может быть полезна команда ini_set:

  ini_set('display_errors', 1); //включение ошибок  

Однако данная команда обычно заблокирована.

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

  display_errors = on  

Дата публикации: 2016-10-17

100.jpg

От автора: приветствую вас, дорогие читатели.… Откуда шишка на лбу? Это я вчера грабли нашел на даче, которые потерял в прошлом году. В общем, все банально: сам забыл – сам наступил. Хорошо, что вывод ошибок PHP происходит не с помощью граблей. Хотя на этом тоже можно набить замечательные «шишки»!

Если ошибки не видны?

Если при выполнении кода у вас не отображаются ни предупреждение (warning), ни ошибки (errors), ни исключения (exception), то значит вы талантливый разработчик. Но при условии, что написанные вами программы работают. Хотя может быть и другая причина, почему все идет так гладко – вы забыли включить ошибки PHP. Точнее, их вывод. Это можно сделать несколькими способами:

В настройках веб-сервера Apache (файл .htaccess).

В настройках языка (php.ini).

Напрямую в коде.

php.jpg

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Следует отметить, что хостеры, предоставляющие виртуальное пространство, часто отключают вывод ошибок. Это делается для обеспечения безопасности ресурсов, размещенных на данной площадке. Поэтому вам повезло, если к вашему сайту подключен Apache. Тогда можно, прописав несколько строк, активировать отображение всех errors и warning. Для этого зайдите в .htaccess (если нет, то создаем) и прописываем следующие строки:

В PHP, чтобы включить вывод ошибок используются две директивы:

display_errors – включает или отключает отображение сообщений об ошибках.

error_reporting – устанавливает, какие именно «баги» следует выводить. Задается числом или константой.

Больше информации по принимаемым значениям констант можно «почерпнуть» из технической документации к языку. Благо, PHP хорошо описан.

А как же Денвер?

Не волнуйтесь, я не забыл о нем. В «наборе для джентльменов» включение отображения «багов» настраивается в php.ini. Он является главным средством конфигурации языка в этом и других подобных программных наборах.

Спасибо создателям Denwer! Они все правильно продумали, и поэтому заранее активировали все основные (нужные) параметры. В том числе и «трансляцию» сообщений об ошибках в программном коде.

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

2.png

Явная активация

Если не уверены, что хостер включил отображение «багов». Или нужно «перекрыть» параметры, заданные в конфигурационных файлах, тогда используйте явную активацию в коде скрипта.

Для этого используется все те же директивы error_reporting и display_errors. Но в программном коде PHP вывод ошибок на экране задается с помощью специальной функции ini_set(). Она служит для изменения значений параметров (переменных и директив), заданных в файле php.ini. Пример использования:

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

С помощью данной функции в php ini типы выводимых ошибок задаются несколькими способами. Но легче всего (и более понятно по смыслу) использовать предустановленные (интегрированные в ядро языка) константы.

Например, активируем отображение ошибок, допущенных в именах или не проинициализированных в программном коде переменных:

php.jpg

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Вывод сообщений обо всех типах «багов»:

Также в PHP можно отключить вывод ошибок. Например:

Также можно запретить отображение ошибок для конкретной строки кода. Для этого используется «собака». Точнее символ «@». Пример:

Немного попрактикуемся

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

Создадим почти бесконечный цикл. Он будет «крутится» очень долго, и время ожидание выполнения кода превысит установленный в настройках лимит – полминуты:

В результате мы получаем сообщение о фатальной ошибке типа «шеф, все пропало» .

3.png

Теперь отключим отображение всех программных «неровностей». Сверху предыдущего кода добавьте строчку:

4.png

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

Сегодня мы научились включать ошибки в PHP htaccess и другими способами, с помощью которых вы сможете рассмотреть в коде все «забытые грабли».

php.jpg

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!php.jpg

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Смотреть Как стать переводчиком-фрилансером?Вышли две версии PHP, латающие серьезные уязвимости ядра —>

Метки:PHP

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

https://webformyself.com/kak-proisxodit-vyvod-oshibok-php-i-drugix-programmnyx-bagov/—>Используемые источники:

  • http://tradebenefit.ru/otobrazhenie-oshibok-v-php-i-na-saite
  • https://blog.foolsoft.ru/php-vklyuchaem-vyvod-oshibok-ili-otklyuchaem-ego-htaccess-php-ini-code/
  • https://webformyself.com/kak-proisxodit-vyvod-oshibok-php-i-drugix-programmnyx-bagov/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации