mac下配置php环境后出现syntax error

刚在mac上配置好php环境,运行项目代码就出现错误:

Parse error: syntax error, unexpected end of file in xxx.php on line 21

检查出错的文件,21行是该文件的最后一行,是一句很简单的php代码,没有发现任何问题。于是我准备用排除法来定位问题,将该行删除后刷新页面,错误信息变成:

Parse error: syntax error, unexpected end of file in xxx.php on line 20

错误行变成20行,而该行是一个html标签。这样就很奇怪了,非php的代码怎么会引发php的语法错误?

再继续排查,该文件中还有一段php代码:

<?php foreach ( $tags as $tag ) {
    ?><a href="<?= $tag[ 'url' ] ?>"><?= $tag[ 'name' ] ?></a>

虽然觉得不太可能,但还是将这段不能再简单的代码删除测试一下,居然不报错了!

继续测试,结果发现只要把循环体彻底删除,就不会报错。而只要保留循环体,哪怕是?><?,也会报错。脑中浮现出之前google时见过的一个诡异问题,莫非⋯⋯

打开php.ini,搜索short_open_tag,好吧,不知道出于什么目的,在用port装的php54里这个值居然是Off!貌似我用yum、apt-get乃至手动编译php,这个值都是On啊。

果断改之,重启php,问题顺利解决。

 

此条目发表在 IT技术, Mac, PHP 分类目录。将固定链接加入收藏夹。