我收到一个错误:
Parse error: syntax error, unexpected end of file in the line
使用此代码:
function login()
{
// Login function code
}
if (login())
{?>
Welcome Administrator
Upload Files
Edit Points Tally
else
{
echo"Incorrect login details. Please login";
}
?>
Some more HTML code
有什么问题?
我可以想象您的某些PHP代码有错误...您尚未发布。
听起来您缺少} ,;或方括号,但如果您发布整个php代码,这将有所帮助
请发布完整的示例
我已经添加了代码
正如@ Ryanc1256所提到的,很可能是缺少括号的情况。如果您确实需要解决方案,请在问题中包含实际代码。
我添加了代码@ Ryanc1256
您可能需要将更改为
因此,一年半的时间,这个问题被关闭是很有趣的,因为它太本地化了,却获得了近5万次观看。
我同意...这完全解决了我的问题。关于问题和解决方案根本没有本地化。
还要在php.ini中的apache和cli配置下检查short_tags
猫/etc/php.ini | grep short_open_tag
我的代码中出现此错误,结果是由于if条件后的分号引起的:if ($var = value);{ ... } else { ... }
您应该避免这种情况(在代码末尾):
{?>
和这个:
您不应该将方括号直接放在open / close php标记附近,但要用空格分隔:
{ ?>
也要避免使用并使用
万一它对任何人都有帮助:我遇到了类似的错误,但是是由} ?>而不是引起的。
我有类似的问题,但是我的情况是我的php.ini文件中的short_open_tag = Off。当我将其打开时,我的代码起作用了。
请注意,虽然Apache接受此Nginx不会(或者说fcgi不会),所以如果您对为什么在一个Web服务器而不是另一个Web服务器上工作的原因感到困惑,您会知道为什么
您是否可以避免使用斜杠杀死了结局?>
我有同样的错误,但是我通过修改php.ini文件来解决。
找到您的php.ini文件,请参见Dude,我的php.ini在哪里?
然后使用您最喜欢的编辑器将其打开。
查找short_open_tag属性,然后进行以下更改:
; short_open_tag = Off ; previous value
short_open_tag = On ; new value
在处理遗留代码时,此答案尤其重要。我继承了其他人编写的代码,并且代码库充满了?>(请注意,缺少的php)。我的任务是添加或更改功能,只为一两个功能更改所有内容通常不是一个好主意。您的回答确实有帮助。
当场,如果您已升级到较新的Plesk托管软件或升级了PHP版本,则尤其值得注意。我们发现php.ini设置被破坏了,我们不得不再次进行设置,这一特殊设置是必须的,以避免文件错误的意外结束
I had the same error, but I had it fixed by modifying the php.ini and / or editing the PHP file!
有两种不同的方法可以解决解析错误语法。
方法1(您的PHP文件)
避免在您的PHP文件中执行以下操作:
} ?>
确保你这样说
Your code contains ?>
NOTE: The missing php after !
方法2(php.ini文件)
还有一种简单的方法可以解决您的问题。
搜索short_open_tag属性值(在文本编辑器中与Ctrl + F一起使用!),然后应用以下更改:
; short_open_tag = Off
至
short_open_tag = On
根据核心php.ini指令的描述,short_open_tag允许您使用短开放标记(),尽管这可能会在与xml一起使用时引起问题(在启用此功能时将不起作用)!
NOTE: Reload your Server (like for example: Apache) and reload your PHP webpage in your browser.
只需转到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
查找是否未关闭任何循环或语句。
我在离开php foreach:标签时遇到了麻烦。
使用以下命令关闭它可以解决语法错误:unexpected end of file
希望对别人有帮助
另外,寻找一条// //断开大括号的注释
if (1==1) { //echo"it is true"; }
关闭花括号将无法正确关闭条件部分,并且php无法正确处理其余代码。
还要避免这种情况} ?>确保您放入
我看到了一些错误,这些错误已在下面修复。
这就是我所犯的错误:
if (login())
{?>
Welcome Administrator
Upload Files
Edit Points Tally
else
{
echo"Incorrect login details. Please login";
}
这就是我要做的:
some code
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 'Welcome Administrator
Upload Files
Edit Points Tally';
}
else
{
echo"Incorrect login details. Please login";
}
?>
some more html code
好吧,如果(登录())里面有东西,我有很多代码要写,这只是一个示例。无论如何,这里的第一个答案已经解决了。我不知道必须放置一个空格。谢谢您的帮助!
无论如何,我只是帮助了我,但我确实喜欢那样做。和你确定
在我的情况下,罪魁祸首是文件最后一行中唯一的标记。显然,它适用于某些配置,没有问题,但会导致其他配置出现问题。
您不能将IF / ELSE指令分为两个单独的块。如果需要打印HTML代码,请使用echo。
function login()
{
// Login function code
}
if (login())
{
echo"Welcome Administrator
Upload Files
Edit Points Tally";
}
else
{
echo"Incorrect login details. Please login";
}
?>
Some more HTML code
对我来说,最常见的原因是省略的}字符,因此函数或if语句块不会终止。我通过在最近的编辑后插入}字符并从那里移动来解决此问题。我使用的编辑器可以找到对应于右括号的左括号,因此该功能也有帮助(它可以找到未正确终止的函数)。
我们可以希望有一天语言解释器和编译器会做一些工作来生成更好的错误消息,因为省略括号很容易。
如果这对任何人有帮助,请对答案进行投票。
如果您使用parse_ini_file($ file)或例程正在传输.ini文件,请检查ini文件中是否引用了数据。未引用的数据将导致此错误。防爆; data1 = test将导致错误,而data1 =" test"则不会。
另外,很难发现的另一种情况是当您只有一个具有功能的文件时,我知道这不是一个常见的用例,但它很烦人并且不得不发现错误。
function () {
}
上面的文件返回错误Parse error: syntax error, unexpected end of file in,而下面的文件不返回。
function () {
};