PHP 中 `syntax error, unexpected $end` 错误的一种原因及解决

当 PHP 遇到 syntax error, unexpected $end 错误时,排查思路如下:

  1. 检查文件中 PHP 的开始标记 <?php 和结束标记 ?> 是否配对。
  2. 额外注意注释中是否出现过 ?>

错误示例:

Parse error: syntax error, unexpected $end in script.php on line xx

调试后发现,错误的行位于文件中间某行:

//$str .= "?>\n";

问题分析

PHP 解释器允许在结束标记前使用单行注释。例如:

//$str .= "?>\n";

被解释为:

结果是,给 $str .= "?>\n"; 这行添加 // 成注释后,反而多了一个 ?> 的结束标记,导致原来的真正结束标记变成了意料之外的(unexpected)。

解决办法

//$str .= "?>\n";