PHP运行报第56行unexpected end of file解析错误找不到原因
报错根源
你遇到的Parse error: syntax error, unexpected end of file不是无意义空行导致的,核心错误是Heredoc 语法不符合PHP规范。
PHP 对 Heredoc 结构(也就是代码中用<<<HTML ... HTML包裹大段字符串的写法)有强制语法约束:
- 起始标记
<<<HTML必须独占一行,后面紧跟换行 - 结束标记所在行必须顶格书写,行首不能有任何空格、制表符类的缩进内容,标记后面除了分号不能跟其他字符
你当前代码里的Heredoc结束标记HTML前面带了4个空格的缩进,PHP解析器根本识别不到这是字符串的闭合标记,就会持续向下寻找匹配的闭合结构,直到读到文件末尾都没找到,才会抛出“意外遇到文件末尾”的报错,而且报错行号会指向文件最后一行(也就是你看到的第56行),完全不会提示真正的错误位置,很容易误导排查方向。
修正方法
把Heredoc的结束标记从带缩进的位置,移动到完全顶格的行首,和当前PHP语句的左边缘对齐即可:
// 修正后的正确写法 while ($data = $result->fetch_object()) { echo <<<HTML <tr> <td>$data->id</td> <td>$data->name</td> <td>$data->address</td> <td>$data->email</td> </tr> HTML; // 注意这里的HTML前面没有任何空格,顶格书写 }
补充说明
从PHP 7.3版本开始,PHP才支持“结束标记可以带和代码同级的缩进”的灵活Heredoc语法,如果你用的XAMPP环境搭载的是PHP 7.2及更早的版本,带缩进的结束标记会直接触发语法错误,必须严格遵守顶格的书写规则。
内容的提问来源于stack exchange,提问作者this is mountain
相关产品推荐
相关产品推荐

