Общие PHP ошибки

В этом руководстве, мы рассмотрим некоторые общие PHP ошибки, которые возникают и как их решить.

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

А проанализировать ошибки, когда формат ваших PHP-код неверен. Например, следующий код:

  <? php для ($ я = 1; я $ <10; я $ + +) ($ выходной = "Актуальные Итераторы:".  $ я.  "<br>" эхо $ выходной;)?> 

вернет ошибку, схожую со следующим:

Синтаксическая ошибка: проанализировать ошибки, неожиданные T_ECHO в с: \ веб \ test2.php по разделу 4

  

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

Эта ошибка возникает также в фигурные скобки, (), например, следующий код:

  <? php для ($ я = 1; я $ <10; я $ + +) ($ выходной = "Актуальные Итераторы:".  $ я.  "<br>"; если ($ выходной == 5) (эхо "Это пятая итерация";)))?> 

который вернет сообщение об ошибке

Синтаксическая ошибка: проанализировать ошибки, неожиданные ')' в с: \ веб \ test2.php по разделу 8

Это вызвано дополнительным закрытия скобками,), в строке 8. Хотя это просто видеть проблему в предыдущем короткий блок кода, она может быть гораздо сложнее со сложной код, содержащий много вложенных циклов или, если заявления, и она с трудом матч открытия скобки с закрытием скобки.

Чтобы быстро найти проблему, вы можете использовать Dreamweaver MX Баланс Брас команду, которая находится в меню Правка. Вы можете поместить курсор на строку кода, выберите Баланс Брас команду, и она будет осветить все строк кода для данного блока от открытия скобками к закрытию скобками. Проверив слои кода с баланса Брас команду, вы можете быстро найти, где есть недостающие или лишние скобками.

Undefined Индекс или переменная

Этот раздел объясняет, что делать, если вы получили сообщение на веб-странице, как одно из следующих действий:

Предупреждение

Undefined индекс: действия в \ главная \ www \ login.php на линии 25

Предупреждение

Undefined переменная: сообщение в доме \ www \ login.php на линии 52

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

В качестве примера рассмотрим два следующих блоков кода:

  <? php $ var имя пользователя; имя пользователя $ = $ HTTP_SESSION_VARS [ "имя пользователя"];?> и: <? php $ имя пользователя = $ HTTP_SESSION_VARS [ "имя пользователя"];?> 

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

Есть два пути решения этой проблемы. Первый заключается в том, чтобы вернуться через ваш код и убедитесь в том, что каждая переменная конкретно определены. Второй вариант заключается в том, чтобы остановить уведомления от отображения, как они зачастую больше проблем, чем они стоит. Это можно сделать, добавив следующий код в верхней части каждой страницы, которая имеет ошибку:

  <? php error_reporting (E_ALL и ~ E_NOTICE);?> 

Это говорит PHP, чтобы показать все сообщения об ошибках и предупреждения, но не показывать уведомления. Чтобы делать это постоянно, менять настройки error_reporting в вашем php.ini файл с предыдущим обстановке.

Заголовки уже отправлено ошибки

Это еще одна ошибка, что происходит часто, особенно при использовании cookies или сессии, и она похожа на следующее сообщение:

Можно не изменять информацию в заголовке - заголовки уже разослан (выпуск начался в / главная / веб / newtest.php: 3), в / главная / веб / test.php в строке 5

Эта проблема вызвана пробелы перед заголовком функции. PHP-заголовок функция используется для перенаправления пользователей на другую страницу, которую он делает, отправляя команды в заголовке страницы в браузере, указав, что его, чтобы перейти на новую страницу. Однако, один раз в заголовке был отправлен в браузер, вы больше не можете использовать функции, которые имеют доступ в заголовке, такие, как заголовок функции. Если что-либо направляется в браузер, который не является специальной функцией заголовка, то заголовок закрыты, а все остальное, как предполагается, будет HTML для веб-страницы. Так почему же это происходит с предыдущим код?

Проблема возникает потому, что есть пустая строка (строка 2), который отправляется в браузере. Это приводит заголовке, чтобы быть закрыты, так что заголовок не удалось, поскольку она больше не может писать в заголовок. Однако, даже если вы удалите пустую строку в строке 2, вы получите сообщение об ошибке. Это происходит потому, что существуют два места на завершающем этапе?> Метки на линии 1. Они также должны быть исключены, как раз они будут направлены в браузере и будет закрывать заголовка. Эти пробелы в конце строки может быть трудно обнаружить, поскольку они невидимые!

Существует метод можно использовать, то, чтобы найти их проще. Если Вы поместите курсор в конце каждой строки, и щелкнуть левой кнопкой мыши и переместите мышь право, никаких пробелов в конце строки будут выделены, как это показано в предыдущем снимок экрана. Места могут быть удалены.

Если код теперь повторную проверку, она должна работать правильно.

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

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

Перевод заметить: В статье "Общие PHP ошибок" был переведен с использованием автоматизированной службы перевода. Мы приносим извинения за любые ошибки перевода, что произошло. Спасибо за понимание.

Online: 497 users browsing the articles directory