我最近升级到xampp v1.7.2,它将PHP 5.3转储给我。随之而来的是我的所有httpd.conf和php.ini都被消灭了(我已经理所当然地认为这个版本将像所有早期的xampp版本一样升级)。无论如何,我花了一段时间来重新配置所有服务 - 但现在我遇到了一个有趣的问题。
我工作场所使用的这个自编的CMS对if-else使用了很多替代条件语法,即
if( condition ): ?>
<some html />
<?php else: ?>
<some other html />
<?php endif;
这曾经与xampp 1.7.1附带的PHP 5.2.x一起使用 - 现在突然出现这样的代码块产生了这个错误:
解析错误:语法错误,意外 T_ELSE ...
我没有以任何方式改变我的脚本 - 在PHP 5.2.x中完全没有顺利工作。
所以我的问题是,PHP 5.3是否允许这样的替代条件?或者我是否必须在配置文件中打开一些隐藏选项?
请注意,我不使用短标签 - 所以这里不是问题。
答案 0 :(得分:4)
尽管在5.3中if / else语法没有改变,但语法的许多其他部分都有。您应该检查有问题的else语句之前的行,看看其他一个新的语法功能是否会使解析器混淆。
如果你无法弄清问题的位置,你可以随时开始系统地删除代码行,直到你留下以下三行:
<?php if(condition): ?>
<?php else: ?>
<?php endif ?>
更新:您真的应该在启用short_open_tag
的情况下测试您的代码,因为您看到的语法错误是您在某处获得此代码时会得到的:
<? if(condition): ?>
<?php else: ?>
<?php endif ?>
答案 1 :(得分:0)
是的,PHP 5.3允许alternative syntax用于控制结构,包括条件语句。
我建议尝试通过在一个或两个地方用常规语法替换替代语法来检查它是否能解决问题。如果确实如此,那么您肯定知道问题是什么。