解析错误:语法错误,我的PHP代码中出现意外的文件结尾

解析错误:语法错误,我的PHP代码中出现意外的文件结尾,php,html,parse-error,Php,Html,Parse Error,我有一个错误: Parse error: syntax error, unexpected end of file in the line 使用此代码: <html> <?php function login() { // Login function code } if (login()) {?> <h2>Welcome Administrat

我有一个错误:

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>

欢迎管理员

更多的HTML代码

有什么问题吗?

我看到了一些错误,我在下面修复了这些错误

我认为这是错误的:

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";
}
if(login())
{?>
欢迎管理员

更多的html代码
您应该避免(在代码末尾):

这是:

<?php}

同样避免
我也有同样的错误,但是我通过修改
php.ini
文件来修复它

查找php.ini文件,请参见

然后用你最喜欢的编辑器打开它

查找
short\u open\u标记
属性,并应用以下更改:

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

只需转到php.ini,然后找到
short\u open\u tag=Off
设置为
short\u open\u tag=On

检查您是否关闭了类

例如,如果您有一个带有方法的控制器类,并且意外地删除了关闭整个类的最后一个括号,您将得到此错误

class someControler{
private $varr;
public $varu;
..
public function method {
..
} 
..
}// if you forget to close the controller, you will get the error
也要避免这种情况
请确保将


我也有同样的错误,但是我通过修改php.ini和/或编辑php文件来修复它

有两种不同的方法可以绕过解析错误语法

方法1(您的PHP文件) 在PHP文件中避免以下情况:

<? } ?>


根据,
short\u open\u标记
允许您使用short-open标记(
此外,请查找一条注释//以打断右大括号

如果(1==1){//echo“这是真的”}

关闭的大括号将无法正确关闭条件部分,php也无法正确处理代码的其余部分。

查找未关闭的循环或语句。 当我没有关闭一个php foreach:tag时,我遇到了这个问题

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

希望它能帮助别人

另外,另一种很难发现的情况是,当你有一个只包含一个函数的文件时,我知道这不是一个常见的用例,但它很烦人,而且必须发现错误

<?php
function () {

}

如果您使用的parse_ini_文件($file)或例程正在生成.ini文件,请检查ini文件中是否引用了您的数据。未引用的数据将导致此错误。例如:data1=test将导致此错误,data1=“test”将不会。在我的情况下,罪魁祸首是我唯一的一个开口
,最常见的原因是省略了一个}字符,以便函数或if语句块不会终止。我通过在最近的编辑后插入}字符并将其移动来解决此问题。我使用的编辑器可以定位与结束括号相对应的开始括号,因此该功能也有帮助(它可以定位未正确终止的函数)

我们希望有一天语言解释器和编译器会做一些工作来生成更好的错误消息,因为省略结束括号是很容易的


如果这对任何人都有帮助,请投票支持答案。

您不能将If/ELSE指令分成两个单独的块。如果您需要打印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>

更多的HTML代码
此外,还要注意heredoc关闭标识符。 无效示例:

//它不工作了!!!
函数findAll(){

$query=为了补充其他答案,如果您使用像FileZilla这样的ftp客户端,也可能是由于php脚本的自动缩小。请确保传输类型设置为二进制,而不是ASCII或自动。ASCII或自动传输类型可以缩小导致此错误的php代码。

我开发了一个插件,并将其安装在一个服务器上Wordpress站点在Nginx上运行,很好。我只是在切换到Apache时出现了这个错误,结果发现web服务器没有接受
这不是对您的代码的回答,而是对相同错误消息的回答。这可能对某些人有帮助。
class someControler{
private $varr;
public $varu;
..
public function method {
..
} 
..
}// if you forget to close the controller, you will get the error
在我的例子中,我遇到了一个错误“Parse error:Syntax error,在第665行的PHP代码中出现了意外的文件结尾” 我的问题出在45号线上

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

$html=在我的例子中,它是一个未关闭的函数。
我不得不一个接一个地删除和恢复函数,以检查哪一个影响了代码


我希望有人能从中受益

我可以想象你的一些PHP代码出现了一个错误……你还没有发布。听起来好像你缺少了一个“}”“,”;”或括号,但如果你在一年半后发布整个php代码,这会有所帮助。有趣的是,这个问题被关闭了,因为它太本地化了,但它有近50000个视图。我同意……这完全解决了我的问题。关于这个问题和解决方案,根本没有本地化。另外,请检查你的php.ini在apache
和cli
下配置,如果(login())的话,东西就在里面,我有很多代码要写,这只是一个示例。不管怎样,这里的第一个答案已经解决了它。我不知道必须放一个空格。谢谢你的帮助!你只是在帮助我,你确实得到了,但我只是喜欢这样做。你当然,如果这对任何人都有帮助的话:我得到了一个类似的错误,但是是由
而不是
引起的ode>。我也有类似的问题,但我的情况是,我的php.ini中有short\u open\u tag=Off。当我将其打开时,我的代码工作正常。注意,尽管Apache接受此Nginx,但Nginx没有(或者说fcgi没有)因此,如果您被为什么这在一台web服务器上工作而不是在另一台服务器上工作所困扰,那么您知道为什么可以添加注释斜杠来避免这种情况吗?>是否有原因
这个答案在处理遗留代码时特别重要。我继承了其他人编写的代码,代码库中充满了
(请注意,缺少的
php
)。我的任务是添加或更改功能,仅为一两个功能更改所有内容通常不是一个好主意。您的回答确实很有帮助。请注意,如果您已升级到新功能,这一点尤其值得注意
<?php foreach($many as $one): ?>
<?php endforeach; ?>
<?php
function () {

}
<?php
function () {

};
<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>
<br />
<b>Parse error</b>:  syntax error, unexpected end of file in <b>[...][...]</b> on line <b>5</b><br />
    $html = <<<html
....
            html
    $html = <<<html
....
html