Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный конец файла в мой 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>

в чем проблема?

11 ответов


вы должны избегать этого (в конце кода):

{?>

и так:

<?php}

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

{ ?>
<?php {

избежать <? и использовать <?php


у меня была такая же ошибка, но я ее исправил, изменив .

найдите свой php.файл ini см. В статье чувак, где мой php.Ини?

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

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

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

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

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

метод 1 (Ваш PHP-файл)

Избегайте в своем PHP-файле этого:

<? } ?>

убедитесь, что вы положили его так

<?php ?>

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

Примечание: отсутствует php после <?!

Метод 2 (php.ini-файл)

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

; short_open_tag = Off

to

short_open_tag = On

по словам описание основного php.ini директивы, short_open_tag позволяет использовать короткий открывающий тег (<?) хотя это может вызвать проблемы при использовании с xml (<?xml не будет работать, когда это включено)!

Примечание: перезагрузите сервер (например, 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 foreach: tag unclosed.

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

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

<?php endforeach; ?>

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


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

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

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 } ?>


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

<?php
function () {

}

файл выше возвращает erro Parse error: syntax error, unexpected end of file in в то время как ниже нет.

<?php
function () {

};

Если вы используете parse_ini_file ($file) или подпрограмму rading an .ini-файл, проверьте, указаны ли ваши данные в ini-файле. Неквотируемые данные вызовут эту ошибку. Ex; data1=test вызовет ошибку, data1= "test" - нет.