В этом руководстве, мы рассмотрим некоторые общие 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 индекс: действия в \ главная \ 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 тега в файл включения, которые должны быть сняты, если они присутствуют.
|
|