Отладка PHP и нахождение ошибок в коде

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

1. Ошибка синтаксиса.

В этом вам поможет любой нормальный редактор с проверкой синтаксиса. Я использую Eclipse SDK с установленным плагином PDT. Замечательно подсвечивает синтаксис PHP, а также HTML, XML и XSL. Слегка работает с JS. Автоподстановка и прочие прелести в комплекте. Требует JRE для работы. Кушает много памяти.

Также ошибки синтаксисы выражаются во всяких загадочных фразах:

unexpected ЧТО-ТО, expecting ЧТО-ТО_ДРУГОЕ or ЕЩЁ_ЧЕГО-НИБУДЬ on line N — намекает нам о том, что там требуется ЧТО-ТО_ДРУГОЕ вместо ЧТО-ТО. Обычно это строка N-1. Например, скобку забыли поставить или точку с запятой.

unexpected $end — скорее всего забыли поставить закрывающую фигурную скобку.

Вообще слово unexpected переводится как неожиданный. Поэтому если вы это видите — знайте, что-то не там поставили или не дописали. Это как вам должны были выдать зарплату, а выдали мешок яблок. Вот это будет unexpected ‘мешок яблок’ :)

Call to undefined function — вы пытаетесь вызвать что-то несуществующее. Может написали prinf(); вместо printf(); ну и всё такое прочее.

Если вдруг у вас ничего не работает, но ничего не выводится, то поставьте параметр error_reporing = E_ALL;  Будет отображать все ошибки, включая notice’ы.

Если даже с включенными ошибками у вас ничего не работает вообще — то тут уже надо курить логи апачи и php.

2. Ошибки логики.

Опять-таки надо первым делом включить error_reporting в E_ALL. Иначе уведомления типа: undefined index, undefined variable показываться не будут, и вы долго будете думать, «что ж таки случилось?».

Далее. Если у вас на выходе получается не то, что вы хотите — делайте вывод своей переменной на каждом шаге.  Причём не просто через print/echo, а через var_dump(), который покажет вам и тип переменной и всю её начинку.

Я вообще пользуюсь своей версией var_dump() ‘a:

  1. /**
  2. * Выводит информацию о переменной
  3. * @param $text переменная для вывода
  4. * @param $exit прекращать работу после вывода
  5. */
  6. function vardump($text, $exit = false) {
  7. print ‘<pre>’;
  8. var_dump($text);
  9. print ‘</pre>’;
  10. if($exit)
  11. die();
  12. }
Прелесть этой функции в том, что если у вас где-то есть header(‘Location:’); то вызвав vardump($a,1); вы завершите скрипт и получите информацию о своей переменной.
А вообще, для самой классной отладки — надо ставить xDebug.

Читайте также:

Комментариев нет

  1. Free:

    Спасибо понравилось !

  2. Аварии:

    Пасибо за материалы!
    Respect maksimvoloshin.ru

  3. Аварии:

    Благодарность за материалы! :)
    Respect maksimvoloshin.ru

  4. User:

    Пишу тут раз обратной связи не нашла. У меня иногда пишет ошибку вот тут maksimvoloshin.ru Ошибка 403 «Доступ запрещен»
    Что мне делать ? я иногда статьи у вас беру для своей газеты.

  5. Алекс:

    С Новым Годом Вас !
    Отладка PHP и нахождение ошибок в коде | Блог программиста
    Вашему сайту ставлю +

  1. 06 Сен 2011

    […] Для чего Я сделал функцию vardump – смотри тут […]

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

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