programing

해석 오류: 구문 오류, 내 PHP 코드의 예기치 않은 파일 끝

luckcodes 2022. 11. 27. 20:05

해석 오류: 구문 오류, 내 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}

브래킷을 열림/닫힘 바로 옆에 두지 마십시오.php태그는 공백으로 구분합니다.

{ ?>
<?php {

또한 피하다<?및 사용<?php

같은 에러가 발생했지만, 이 에러를 수정하여 수정했습니다.php.ini파일.

당신의 php.ini 파일을 찾습니다.dude, my 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끝나고<?!

방법 2(php.ini 파일)

당신의 문제를 해결하는 간단한 방법도 있습니다.검색:short_open_tagproperty value(텍스트 에디터에서 !와 함께 사용) 및 다음 변경을 적용합니다.

; short_open_tag = Off

로.

short_open_tag = On

core php.ini 디렉티브의 설명에 따르면short_open_tag숏 오픈태그를 사용할 수 있습니다(<?xml과 <?xml함께 사용하면 문제가 발생할 수 있습니다( 기능을 활성화하면 작동하지 않습니다).

주의: 서버를 새로고침합니다(예: Apache)사용하여 브라우저에서 PHP 웹 페이지를 새로고침합니다.

php.ini에 접속하여 찾아주세요.short_open_tag= Off로 설정하다.short_open_tag= On

또한 유전적인 클로징 식별자에 주의하십시오.

유효하지 않은 예:

// it's not working!!!

function findAll() {
    $query=<<<SQL
        SELECT * FROM `table_1`;
    SQL; // <-------- THIS IS BAD

    // ...
}

그러면 다음과 같은 예외가 발생합니다.

<br />
<b>Parse error</b>:  syntax error, unexpected end of file in <b>[...][...]</b> on line <b>5</b><br />

여기서 숫자 5는 파일의 마지막 줄 번호일 수 있습니다.

php 매뉴얼에 따르면:

경고 종료 식별자가 있는 행에는 세미콜론(;)을 제외한 다른 문자를 포함할 수 없습니다.이는 특히 식별자를 들여쓰지 않고 세미콜론 앞이나 뒤에 공백이나 탭이 없을 수 있음을 의미합니다.또한 종료 식별자 앞의 첫 번째 문자는 로컬 운영 체제에서 정의한 줄바꿈이어야 합니다.이것은 macOS를 포함한 UNIX 시스템에서 \n입니다.닫힘 구분 기호 뒤에 새 행이 와야 합니다.

TLDR: 닫기 식별자를 들여쓰지 마십시오.

유효한 예:

function findAll() {
    $query=<<<SQL
        SELECT * FROM `table_1`;
SQL;
    // closing identifier should not be indented, although it might look ugly

    // ...
}

루프나 문이 닫혀 있지 않은지 확인합니다.

php foreach: 태그를 닫지 않은 채로 두었을 때 이 문제가 발생했습니다.

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

사용하여 구문되었습니다.unexpected end of file

<?php endforeach; ?>

도움이 되었으면 좋겠다

수업을 닫았는지 확인하세요.

예를 들어 메서드를 사용하는 컨트롤러 클래스가 있는데 실수로 클래스 전체를 닫는 최종 브래킷을 삭제하면 이 오류가 발생합니다.

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

closing collar bride는 조건 섹션을 제대로 닫지 않고 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
function () {

}

"erro"를 반환합니다.Parse error: syntax error, unexpected end of file in아래는 그렇지 않습니다.

<?php
function () {

};

였다.<?php파일 마지막 줄에 태그를 붙입니다.일부 구성에서는 문제없이 작동하지만 다른 구성에서는 문제가 발생한다고 합니다.

상에서 하고 있는 apache2으로 이 ./etc/php/<php version>/apache2/php.in 스크립트를 php로 하고 php cliphp example.php/etc/php/<php version>/cli/php.ini

설정하다short_open_tag = Off로로 합니다.short_open_tag = On apache2의 경우 합니다.sudo systemctl restart apache2.service

나에게 가장 빈번한 원인은 생략된 } 문자이기 때문에 함수나 문 블록이 종료되지 않습니다.최근 편집 후 }자를 삽입하여 이동함으로써 수정하고 있습니다.닫힘 괄호에 대응하는 여는 괄호를 찾을 수 있는 에디터를 사용하고 있기 때문에, 그 기능도 도움이 됩니다(정확하게 종료되지 않은 기능을 찾을 수 있습니다).

닫는 괄호는 생략하기 쉽기 때문에 언젠가는 언어 인터프리터와 컴파일러가 더 나은 오류 메시지를 생성하기 위한 작업을 할 수 있기를 기대할 수 있습니다.

이게 도움이 되는 사람이 있으면 투표해 주세요.

다른 답변을 보충하기 위해 FileZilla와 같은 FTP 클라이언트를 사용하는 경우 php 스크립트가 자동으로 최소화되기 때문일 수도 있습니다.전송 타입이 ASCII 또는 auto가 아닌 Binary로 설정되어 있는 것을 확인합니다.ASCII 또는 자동 전송 유형은 이 오류를 유발하는 php 코드를 최소화할 수 있습니다.

저 같은 경우에는 닫히지 않은 함수였어요.어떤 기능이 코드에 영향을 미치는지 확인하기 위해 하나씩 제거하고 복원해야 했습니다.

누군가 이득을 봤으면 좋겠다.

이것은 코드에 대한 응답이 아니라 동일한 오류 메시지에 대한 응답입니다.누군가에게 도움이 될 수도 있어요.내 경우, "Parse error: Syntax error, unexpected end of file in my PHP code in line 665" 오류가 발생했습니다. 내 경우 문제는 "html"을 닫는 것과 관련이 있습니다.

    $html = <<<html
....
            html

버전 7.2에서는 닫기 태그는 공백 없이 사용해야 합니다.

    $html = <<<html
....
html

parse_ini_file($file)을 사용하거나 루틴이 .ini 파일을 복사하는 경우 ini 파일에서 데이터가 따옴표로 둘러싸여 있는지 확인합니다.따옴표로 둘러싸지 않은 데이터가 이 에러의 원인이 됩니다.예: data1=test에서 오류가 발생하지만 data1="test"에서는 오류가 발생하지 않습니다.

Nginx에서 실행되는 Wordpress 사이트에 플러그인을 개발하여 설치했는데 괜찮았습니다.에러는 했을 때만 했는데, 알고 웹가 Apache를 .<? 그냥 그, the, , 는, 는, 는, 는, ,, ,, ,, ,, ,, ,,<?를 달다<?php효과가 있었어요

언급URL : https://stackoverflow.com/questions/11482527/parse-error-syntax-error-unexpected-end-of-file-in-my-php-code