web-dev-qa-db-ja.com

構文解析エラー:構文エラー、私のファイルの予期しない終わり 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>

どうしたの?

145
pratnala

あなたはこれを避けるべきです(あなたのコードの終わりに):

{?>

この:

<?php}

大括弧をopen/close phpタグのすぐ近くに置かないでください。ただし、スペースで区切ります。

{ ?>
<?php {

また<?を避けて<?phpを使う

281
j0k

同じエラーがありましたが、php.iniファイルを修正することで修正しました。

Php.iniファイルを探してください。 Dude、php.iniはどこにありますか。

それからあなたの好きなエディタでそれを開いてください。

short_open_tagプロパティを探して、次の変更を適用します。

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

同じエラーが発生しましたが、php.iniを変更したりPHPファイルを編集したりして修正しました。

解析エラー構文を回避するには、2つの異なる方法があります。

方法1(あなたのPHPファイル)

PHPファイルでこれを避ける:

<? } ?>

必ずこのように置いてください

<?php ?>

コードに<? ?>が含まれています

注:<?の後の欠落しているphp

方法2(php.iniファイル)

問題を解決する簡単な方法もあります。 short_open_tagプロパティ値を検索します(Ctrl + F!でテキストエディターで使用)、次の変更を適用します。

; short_open_tag = Off

short_open_tag = On

コアphp.iniディレクティブの説明 によると、short_open_tagでは短いオープンタグ(<?)を使用できますが、これはxml(<?xmlで使用すると問題が発生する可能性がありますこれを有効にすると機能しなくなります)!

注:サーバーのリロード(例:Apache)など、ブラウザでPHPウェブページをリロードします。

30
Suriyaa

Php.iniに行き、short_open_tag= Offshort_open_tag= Onに設定されているのを見つけてください。

10
Hamzah Akram

クラスを閉じたことを確認してください。

たとえば、メソッドを持つコントローラクラスがあり、誤って最後の括弧を削除すると、クラス全体が閉じられ、このエラーが発生します。

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

また、//中括弧を閉じるコメント//を探す

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

閉じ中括弧は条件付きセクションを正しく閉じず、phpは残りのコードを適切に処理しません。

4
Steve Wasiura

ループやステートメントがクローズされていないままになっていないか探します。

Php foreach:tagを閉じていないときにこの問題に遭遇しました。

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

以下を使用してそれを閉じることは構文エラーを解決しました:unexpected end of file

<?php endforeach; ?>

誰かに役立つことを願っています

3
Imtiaz

これも避ける<? } ?><?php } ?>を必ず入れてください

2
Gpak

私はいくつかのエラーを見ましたが、私は以下でそれを修正しました。

これが間違っていると私が得たものです。

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>
2
ryanc1256

私の場合、犯人はファイルの最後の行にある<?phpタグの唯一のオープニングです。どうやらそれは問題なくいくつかの構成で動作しますが、他のもので問題を引き起こします。

1
J. Wrong

使用しているparse_ini_file($ file)またはルーチンが.iniファイルを処理している場合は、データがiniファイルで引用されているかどうかを確認してください。引用符で囲まれていないデータはこのエラーを引き起こします。 Ex; data1 = testはエラーを引き起こしますが、data1 = "test"は起こりません。

0
Wynn

IF/ELSE命令を2つの別々のブロックに分割することはできません。 HTMLコードを印刷する必要がある場合は、echoを使用します。

<html>
    <?php
        function login()
        {
            // Login function code
        }
        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>
0
TK-421

また、見つけることが難しいもう一つのケースは、あなたが関数だけを持つファイルを持っているときです、私はそれが一般的なユースケースではないことを知っていますが、それは厄介でエラーを見つける必要がありました。

<?php
function () {

}

上記のファイルはerro Parse error: syntax error, unexpected end of file inを返しますが、以下のファイルは返しません。

<?php
function () {

};
0
neisantos