наверх

Ошибки PHP: как найти ошибку в своем коде?

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

Вообще существует три типа ошибок в скриптах: синтаксические, логические и ошибки времени выполнения. Давайте рассмотрим их подробнее.

Синтаксические ошибки

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

Рассмотрим несколько примеров синтаксических ошибок. Например, браузер показывает вам сообщение об ошибке вроде этого:

Parse error: syntax error, unexpected T_ECHO, expecting ‘,’ or ‘;’ in /home/dotawwin/public_html/administrator/templates/khepri/index.php on line 3

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

Обратите внимание на то, что ошибка будет указывать на строку следующую за строкой в которой была совершена ошибка.

Итак в нашем примере ошибка во второй строке, но обработчик указывает на третью. Почему так происходит? PHP проходит сверху вниз по всем строкам и получается что во второй строке ошибки он не видит, ищет точку с запятой и не находя ее перепрыгивает на следующую строку. На следующей строке он сталкивается с новым действием перед которым не стоит точка с запятой и считает что ошибка именно тут. Поэтому при столкновении с ошибкой Parse error: syntax error, unexpected T_ECHO смотрите на строку выше строки указываемой обработчиком.

Следующая часто встречающаяся ошибка Parse error: syntax error, unexpected $end. Это значит что вы начали писать условие и не поставили закрывающую фигурную скобку. Эта ошибка одна из неприятнейших ошибок так как обработчик всегда будет указывать на последнюю строку документа вне зависимости от того где именно должна стоять потерянная скобка (PHP будет искать конец условия до самого конца документа и не найдя его). Поэтому советую при создании условий сразу ставить закрывающую скобку.

Подведем итог, наиболее часто встречающиеся синтаксические ошибки:

  • отсутствует точка с запятой в конце выражения;
  • опечатка в имени оператора или функции;
  • буква набрана в русской раскладке клавиатуры вместо латинской; отсутствие открывающей или закрывающей скобки (или наоборот лишние скобки);
  • в цикле for указаны параметры через запятую, а не через точку с запятой.

Логические ошибки

Это ошибки в логике работы программы и выявляются они по результатам работы скрипта. Интерпретатор не предупреждает о наличии подобных ошибок, а программа в свою очередь будет выполняться, так как не содержит синтаксических ошибок. Такие ошибки трудно выявить и исправить. Простейший пример такой ошибки: в логическом выражении вместо оператора == (равно) указан оператор присваивания =.

Ошибки времени выполнения

Это ошибки, которые возникают во время работы скрипта. Причиной являются события, не предусмотренные программистом. Рассмотрим одну из самых распространенных ошибок:

Warning: Missing argument

Эта ошибка означает что вы потеряли аргумент. Например, ваш код:

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

Warning: Missing argument 1 for name(), called in (путь к файлу с ошибкой)\index.php on line 16 and defined in (путь к файлу с ошибкой)\index.php on line 11 0

И уже в самом сообщении об ошибке нам указывается где пропущен аргумент и в какой строке объявляется данная функция.

Чтож мы познакомились с разновидностями ошибок PHP и рассмотрели несколько примеров ошибок. Остается запомнить, что то или иное сообщение обозначает и борьба с ошибками станет куда проще и кратковременней.