parsing错误:语法错误,我的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} 

你不应该把括号直接放在开放/closures的php标签上,而是用一个空格分开:

 { ?> <?php { 

也避免<? 并使用<?php

我有同样的错误,但我修改了php.ini文件。

find你的php.ini文件,看看老兄,我的php.ini在哪里?

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

查找一个short_open_tag属性,并应用以下更改:

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

我有同样的错误,但我已经通过修改php.ini和/或编辑PHP文件修复!

有两种不同的方法来解决parsing错误语法。

方法1(您的PHP文件)

避免在你的PHP文件中:

 <? } ?> 

确保你把它这样

 <?php ?> 

你的代码包含<? ?> <? ?>

注意: <?

方法1(php.ini文件)

还有一个简单的方法来解决你的问题。 searchshort_open_tag属性值(在文本编辑器中使用Ctrl + F !) ,并应用以下更改:

 ; short_open_tag = Off 

 short_open_tag = On 

注意: 重新加载您的服务器(例如:Apache),并在您的浏览器中重新加载您的PHP网页。

只要去php.ini,然后findshort_open_tag= Off设置为short_open_tag= On

检查你是否closures了你的class级。

例如,如果你有控制器类的方法,并意外删除最后一个括号,closures整个类,你会得到这个错误。

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

右大括号不会正确地closures条件部分,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的foreach时,我碰到了这个麻烦:标签没有封闭。

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

使用以下解决方法解决了语法错误: unexpected end of file

 <?php endforeach; ?> 

希望它可以帮助别人