Как происходит вывод ошибок PHP и других программных багов

Как происходит вывод ошибок PHP и других программных багов

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

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

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

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

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

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

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

php_flag display_errors on
php_value error_reporting -1 

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

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

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

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

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

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

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

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

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

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

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

ini_set('display_errors', 1);

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

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

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

error_reporting(E_NOTICE);

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

error_reporting(E_ALL);

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

error_reporting(0);

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

$v = @$var[$n];

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

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

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

<?php
  while($i<300000000)
  {
  	$i++;

  	}
  	echo "Цикл крутится:".$i." раз";
?>

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

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

error_reporting(0);

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

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

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

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

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

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree