Я получил ошибку:
Parse error: syntax error, unexpected end of file in the line
С этим кодом:
<html>
<?php
function login()
{
// Login function code
}
if (login())
{?>
<h2>Welcome Administrator</h2>
<a href=\"upload.php\">Upload Files</a>
<br />
<a href=\"points.php\">Edit Points Tally</a>
<?php}
else
{
echo "Incorrect login details. Please login";
}
?>
Some more HTML code
</html>
В чем проблема?
php
html
parse-error
pratnala
источник
источник
short_tags
в вашем php.ini под ОБАapache
иcli
конфигиОтветы:
Вам следует избегать этого (в конце вашего кода):
и это:
Вы не должны ставить скобки непосредственно рядом с
php
тегом открытия / закрытия , а разделять их пробелом:также избегать
<?
и использовать<?php
источник
<? } ?>
вместо<?php } ?>
.У меня была та же ошибка, но я исправил ее, изменив
php.ini
файл.Найдите свой файл php.ini, см. Чувак, где мой php.ini?
затем откройте его с вашим любимым редактором.
Найдите
short_open_tag
свойство и примените следующее изменение:источник
<? ?>
(заметьте, отсутствующийphp
). Мне поручено добавлять или изменять функции, и, как правило, не стоит просто менять все только для одной или двух функций. Ваш ответ действительно помог.Есть два разных способа обойти синтаксический анализ ошибки.
Способ 1 (ваш файл PHP)
Избегайте в вашем файле PHP этого:
Убедитесь, что вы поставили это так
Метод 2 (файл php.ini)
Существует также простой способ решить вашу проблему. Найдите
short_open_tag
значение свойства (используйте в текстовом редакторе сCtrl + F
!) И примените следующее изменение:в
Согласно описанию основных директив php.ini ,
short_open_tag
позволяет вам использовать короткий открытый тег (<?
), хотя это может вызвать проблемы при использовании с xml (<?xml
не будет работать, если это включено)!источник
Просто зайдите на php.ini и найдите
short_open_tag= Off
наборshort_open_tag= On
источник
Ищите любые циклы или операторы, оставленные незамеченными.
Я столкнулся с этой проблемой, когда оставил php foreach: тег закрытым.
Закрытие с помощью следующего решило синтаксическую ошибку:
unexpected end of file
Надеюсь, это поможет кому-то
источник
Проверьте, что вы закрыли свой класс.
Например, если у вас есть класс контроллера с методами, и вы случайно удалили заключительную скобку, которая закрывает весь класс, вы получите эту ошибку.
источник
также ищите комментарий // который ломает закрывающую фигурную скобку
if (1==1) { //echo "it is true"; }
закрывающая фигурная скобка не будет корректно закрывать условный раздел, а php не будет правильно обрабатывать оставшуюся часть кода.
источник
Избегайте этого, а также
<? } ?>
убедитесь, что вы положили<?php } ?>
источник
Я видел некоторые ошибки, которые я исправил ниже.
Вот что я получил как ошибочный:
Вот как бы я это сделал:
источник
В моем случае виновником был открывающий
<?php
тег в последней строке файла. Очевидно, что он работает на некоторых конфигурациях без проблем, но вызывает проблемы на других.источник
Также обратите внимание на закрывающие идентификаторы heredoc.
Неверный пример:
Это вызовет исключение, похожее на следующее:
где число 5 может быть номером последней строки вашего файла.
Согласно инструкции php :
TLDR : закрывающие идентификаторы НЕ должны иметь отступ.
Допустимый пример:
источник
Кроме того, еще один случай, когда трудно определить, когда у вас есть файл с просто функцией, я знаю, что это не обычный случай, но он раздражает и должен был обнаружить ошибку.
Файл выше возвращает ошибку,
Parse error: syntax error, unexpected end of file in
а ниже нет.источник
Для меня наиболее частой причиной является пропущенный символ}, так что функция или блок операторов не завершены. Я исправляю это, вставляя символ} после моих последних правок и перемещая его оттуда. Я использую редактор, который может найти открывающие скобки, соответствующие закрывающей скобке, так что эта функция также помогает (она находит функцию, которая не была завершена правильно).
Мы можем надеяться, что когда-нибудь интерпретаторы языка и компиляторы сделают некоторую работу, чтобы генерировать лучшие сообщения об ошибках, так как закрывающую скобку так легко опустить.
Если это кому-нибудь поможет, пожалуйста, проголосуйте за ответ.
источник
Вы не можете разделить инструкции IF / ELSE на два отдельных блока. Если вам нужен HTML-код для печати, используйте echo .
источник
В дополнение к другим ответам, это также может быть связано с автоматической минимизацией вашего php-скрипта, если вы используете FTP-клиент, такой как FileZilla. Убедитесь, что для типа передачи установлено значение Binary, а не ASCII или auto. ASCII или автоматический тип передачи могут минимизировать ваш php-код, приводящий к этой ошибке.
источник
Если вы используете parse_ini_file ($ file) или подпрограмму для проверки файла .ini, проверьте, цитируются ли ваши данные в ini-файле. Данные без кавычек вызовут эту ошибку. Ex; data1 = test вызовет ошибку, data1 = "test" не будет.
источник
В моем случае я скопировал содержимое в другой файл, а затем удалил файл php и создал новый, снова скопировал содержимое в тот же файл, и это сработало.
источник