Ошибка анализа: ошибка синтаксиса, неожиданный конец файла в моем PHP-коде

У меня ошибка:

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} 

Нельзя размещать скобки непосредственно рядом с тегом open / close php , но он разделяется пробелом:

 { ?> <?php { 

также избегайте <? и используйте <?php

У меня была такая же ошибка, но я исправил ее, изменив файл php.ini .

Найдите файл php.ini, см. Dude, где мой php.ini?

затем откройте его с помощью вашего любимого редактора.

Найдите свойство short_open_tag и примените следующее изменение:

 ; short_open_tag = Off ; previous value short_open_tag = On ; new value 

У меня была такая же ошибка, но я исправил ее, изменив php.ini и / или отредактировав файл PHP!

Существует два разных способа обойти синтаксис ошибки синтаксического анализа.

Метод 1 (ваш файл PHP)

Избегайте в вашем файле PHP:

 <? } ?> 

Убедитесь, что вы так выразились

 <?php ?> 

Ваш код содержит <? ?> <? ?>

ПРИМЕЧАНИЕ . Отсутствующий php после <? !

Способ 1 (файл php.ini)

Существует также простой способ решить вашу проблему. Найдите значение свойства short_open_tag (используйте в текстовом редакторе с помощью Ctrl + F !) И примените следующее изменение:

 ; short_open_tag = Off 

в

 short_open_tag = On 

ПРИМЕЧАНИЕ. Перезагрузите сервер (например, Apache) и перезагрузите веб-страницу PHP в своем браузере.

Просто зайдите в php.ini, затем найдите short_open_tag= Off установленный для short_open_tag= On

Убедитесь, что вы закрыли свой класс.

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

 class someControler{ private $varr; public $varu; .. public function method { .. } .. }// if you forget to close the controller, you will get the error 

также, ищите комментарий //, который нарушает закрытие фигурной скобки

if (1==1) { //echo "it is true"; }

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

Избегайте этого, а <? } ?> <? } ?> убедитесь, что вы положили <?php } ?>

Я видел некоторые ошибки, которые я исправил ниже.

Это то, что я получил как ошибочное:

 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"; } 

Вот как я бы это сделал:

 <html> some code <?php function login() { if (empty ($_POST['username'])) { return false; } if (empty ($_POST['password'])) { return false; } $username = trim ($_POST['username']); $password = trim ($_POST['password']); $scrambled = md5 ($password . 'foo'); $link = mysqli_connect('localhost', 'root', 'password'); if (!$link) { $error = "Unable to connect to the database server"; include 'error.html.php'; exit (); } if (!mysqli_set_charset ($link, 'utf8')) { $error = "Unable to set database connection encoding"; include 'error.html.php'; exit (); } if (!mysqli_select_db ($link, 'foo')) { $error = "Unable to locate the foo database"; include 'error.html.php'; exit (); } $sql = "SELECT COUNT(*) FROM admin WHERE username = '$username' AND password = '$scrambled'"; $result = mysqli_query ($link, $sql); if (!$result) { return false; exit (); } $row = mysqli_fetch_array ($result); if ($row[0] > 0) { return true; } else { return false; } } if (login()) { echo '<h2>Welcome Administrator</h2> <a href=\"upload.php\">Upload Files</a> <br /> <a href=\"points.php\">Edit Points Tally</a>'; } else { echo "Incorrect login details. Please login"; } ?> some more html code </html> 

Ищите любые циклы или заявления остаются незакрытыми.

Я столкнулся с этой проблемой, когда оставил php foreach: тег закрыт.

 <?php foreach($many as $one): ?> 

Закрыв его, используя следующую, разрешили синтаксическую ошибку: unexpected end of file

 <?php endforeach; ?> 

Надеюсь, это поможет кому-то