新装的Lanstar主题部署后报错,找不着作者只能自己改
PHP还没学过,只能按百度一点点改了

正文

No 1:

Error:
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /www/wwwroot/blog/usr/themes/lanstar-master/libs/utils.php on line 482
Code:
$post_title = htmlspecialchars($val['title']);
原因查找:
在https://blog.csdn.net/a10201516595/article/details/103358668/找到可能原因:
当变量$外有引号包着的时候,里面的索引不能再加引号!!

可是该行变量$并没有引号包着,先尝试去掉看情况。
去掉后测试不报错。
猜测:可能在代码上文中有缺少的非成对引号存在,待会再找

No 2:

Error:
Parse error: syntax error, unexpected end of file in /www/wwwroot/blog/usr/themes/lanstar-master/libs/utils.php on line 499
Code:
  • 文件最后一行空行报错
}
原因查找:
可能性1:Windows文件系统回车符和Unix不同(已排除)。

可能性2:使用代码高亮工具检查,发现在`$content = <<<EOF`后就没有高亮显示了,可能是这行引起的(已确认)。
可能性2:
  • $content = <<<EOF后就没有高亮显示
foreach ($getIconRow as $key => $value) {
            $iconInfo = explode('+', $value);
            $content = <<<EOF
                <a href="$iconInfo[2]" title="$iconInfo[0]">
                  <svg class="icon" aria-hidden="true">
                      <use xlink:href="#$iconInfo[1]"></use>
                  </svg>
                  </a>
                EOF;
            $text .= $content;

        }
  • 经过查询得知EOF为PHP界定符,需要如下配套使用:
<<<EOF
...
EOF;
  • 且在结束符EOF;前不得有缩进和空格。回看文件,在EOF;前有多个缩进,去除后成功解决问题

结论及修改方法

结论

  • BUG由EOF界定符引起,EOF界定符在PHP中起的作用应该起到“跨行双引号”的作用,因为缩进没有识别到结束符EOF;,系统判断下面整段代码都在“引号”内,所以会出现No.1的报错,但实际和引号无关。

修改方法

  • 找到文件中的EOF;,把前面的空格和缩进去掉。

记录
  • 2022-04-05,迁移自旧博客 - hapke
最后修改:2022 年 04 月 05 日
如果觉得我的文章对你有用,请随意赞赏