По всем вопросам пишите на webmaster@info-pages.com.ua. Вы можете свободно использовать/размещать/перепечатывать статьи сайта всего лишь указав ссылку на источник.
Отладка скриптов в php, учимся на ошибках
Ошибки в php и их отладка
Размещено: 18 сентября 2009
Даже при разработке маленького сайта нужно отлаживать свой код и исправлять ошибки и баги. Без средств отладки обойтись у Вас никак не получится, разве что Вы ясновидящий и можете предсказать, где была допущена ошибка)))) Чтобы полноценно начать писать свой код, необходимо позаботится о выводах ошибок. Если Вы только начинащий программист, то обязательно должны сначала, хотя бы, ознакомится с системой отладки скриптов.
В php все ошибки деляться на такие основные категории:
Название
Описание
Число
Появление
E_ALL
все виды ошибок и предупреждения (кроме, E_STRICT)
2047
E_ERROR
критические ошибки, которые приводят к остановке выполнения скрипта
1
E_WARNING
предупреждения (не являються критическими ошибками, означает что скрипт продолжает свою работу)
2
E_PARSE
ошибки компиляции при проверке кода скрипта перед его выполнением
4
E_NOTICE
уведомления во время выполнения скрипта (например, найден баг похожий на ошибку, но возможно он был допущен преднамерено и является рабочим кодом в следствие инициализации скрипта)
8
E_STRICT
уведомления во время выполнения скрипта по изменению кода для улучшения его интерпретации, например предупреждать Вас об использовании нежелательных (устаревших) функций
2048
PHP 5
E_CORE_ERROR
критические ошибки связаные непосредственно в самом PHP (например, отсутствуют файлы библиотеки)
16
PHP 4
E_CORE_WARNING
предупреждения связаные непосредственно с самим PHP, не критические ошибки (означает что скрипт продолжает свою работу)
32
PHP 4
E_COMPILE_ERROR
критические ошибки во время компиляции
64
PHP 4
E_COMPILE_WARNING
предупреждения во время компиляции, не критические ошибки (означает что скрипт продолжает свою работу)
128
PHP 4
E_USER_ERROR
пользовательские критические ошибки
256
PHP 4
E_USER_WARNING
пользовательские предупреждения
512
PHP 4
E_USER_NOTICE
пользовательские уведомления
1024
PHP 4
В php существует очень детальная и мощная система отладки, которую можно настроить как непосредственно в самом скрипте так и в настройках непосредсвенно самомого PHP.
Чтобы настроить отладку вывод ошибок в настройках php, Вам необходимо открыть файл php.ini (находится в корне каталога с установленым php) и найти в нем блок Error handling and logging. Чтобы включить показ ошибок на дисплее Вам необходимо раскомментировать следующие строки:
error_reporting = E_ALL & ~E_NOTICE | E_STRICT
, где E_ALL - выводим все ошибки,& - и, ~E_NOTICE | E_STRICT - пропускаем уведомления E_NOTICE или E_STRICT.
Для отладки php скриптов непосредственно в скриптах существуют специальные функции, которые отображают все выявленые ошибки:
Название
Описание
error_reporting()
функция устанавливает какие виды ошибок следует далее выводить и возвращает предыдущий вид ошибок, например:
<?php error_reporting(0); //отключает все сообщения об ошибках error_reporting(E_COMPILE_ERROR | E_WARNING | E_STRICT); error_reporting(8); ?>
генерирует сообщения пользователя под видом ошибок E_USER_ERROR, E_USER_WARNING и E_USER_NOTICE, например:
<?php
if (empty($a)) trigger_error ("Критическая ошибка. Нет данных.", E_USER_ERROR); ?>
Теперь Вы можете настроить в своих скриптах нужный вывод ошибок или наоборот отключить (если это удаленный сервер и Вы не хотите чтобы пользователи видели все предупреждения и уведомления).
В php текст ошибок, как правило детально описывает выявленую ошибку и указывает номер строки с ошибкой, например:
<?php echo0 ?>
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\apache\localhost\www\info-pages\www\index.php on line 1
Данная ошибка синтаксическая, строка 1 не закрыта точкой с запятой.
Помимо вывода ошибок при написании кода очень часто приходится проверять передается и соответсвенно получается ли нужная информация в переменные php. Для этогоразработчиками используется функция var_dump(). В отличие от функции echo или print, функция var_dump позволяет выводить на экран, также, массивы. Например: