PHP解析错误:在CodeIgniter视图中意外的文件结尾

11

我的 CodeIgniter 视图出现了 unexpected end of file 错误。

我已经将 PHP 代码复制到 http://codepad.org/S12oXE4t

这段代码通过了各种在线 PHP 语法测试,但是我不知道为什么在尝试在 WAMP Server 中运行时仍然显示以下错误。

Parse error: syntax error, unexpected end of file in
 E:\wampserver\www\CodeIgniter\application\views\layouts\default.php on line 676

参考一下,第676行是代码中的最后一行。我做错了什么吗?


4
你错过了一个闭合括号。 - Bhuvan Rikka
我尝试了这段代码,它一直运行到出现了关于 base_url 的错误。你在复制的时候犯了错误吗? - RonaldBarzell
4
如果您遇到一个无法理解的错误信息,查看此链接:参考 - PHP 中这个错误是什么意思?或许会有所帮助。请注意,此举并不算错。 - hakre
在使用 base_url() 之前,您必须加载 url 助手。 - Bhuvan Rikka
显示剩余2条评论
3个回答

61

检查您的 short_open_tag 设置(使用<?php phpinfo() ?> 查看当前设置)。


7
在答案中,您应该包括short_open_tag的作用,应该将其设置为什么以及原因。 - Nathaniel Ford
1
如果可以的话,我会投你成千上万次的票,因为你刚刚救了我。之前我在键盘上砸了4个小时,试图修复一些随意乱搞的灾难,最后发现那个人只喜欢到处使用过时的短代码。 - MacK
哇!!这是一个非常重要的项目 - 当解决方案如此简单时,我浪费了将近2个小时来尝试解决问题。 - ChicagoSky
1
不得不说,这也让我避免了一个潜在的头痛。 - Halsafar
1
如果您正在使用命令行,可以键入 php -i | grep short_open_tag 而不是 <?php phpinfo() ?>。我猜默认值为Off,这意味着您必须使用 <?php ?> 而不是仅使用 <? ?> - EAmez

21

意外结束文件 表示在 PHP 解析器到达脚本末尾之前,期望出现其他的东西。

从你的巨大文件来判断,你可能缺少了某个 if 语句的闭合括号 (})。

请至少尝试以下几点:

  1. 将代码与视图逻辑分离。
  2. 保持一致性,在一些嵌入式 PHP 语句中使用了结尾的 ; ,而在其他情况下没有,例如: <?php echo base_url(); ?><?php echo $this->layouts->print_includes() ?>。虽然不是必需的,但请勿使用它(或使用它,只需要选择一种方式即可)。
  3. 重复强调,将你的关注点分开。这些代码都是不必要的。
  4. 使用集成开发环境 (IDE),它会帮助你预防此类错误。

如果那是一个}或;,IDE必须指出问题。我在各种IDE中进行了测试,但没有一个IDE指出错误。 - Karthik Malla
3
不可以,如果错误在某个包含文件中。 - Rudi Visser

3
通常问题出现在未关闭括号(})或漏掉分号(;)。

如果那是一个}或;,IDE必须指出问题。我在各种IDE中进行了测试,但没有一个IDE指出错误。 - Karthik Malla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接