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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Метки:

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

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