2

我最近升级到 xampp v1.7.2,它把 PHP 5.3 丢给了我。与此同时,我所有的 httpd.confs 和 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 in ...

我没有以任何方式更改我的脚本 - 在 PHP 5.2.x 中,同样的脚本可以毫无障碍地工作。

所以我的问题是,PHP 5.3 是否允许这样的替代条件?还是我必须在我的配置文件中打开一些隐藏选项?

请注意,我不使用短标签 - 所以它们在这里不是问题。

4

2 回答 2

4

尽管 if/else 语法在 5.3 中没有改变,但语法的许多其他部分已经改变。您应该检查有问题的 else 语句之前的行,以查看其他新语法功能之一是否使解析器感到困惑。

如果你不知道问题出在哪里,你总是可以开始系统地删除代码行,直到剩下以下三行:

<?php if(condition): ?>
<?php else: ?>
<?php endif ?>

更新:你真的应该在short_open_tag打开的情况下测试你的代码,因为如果你在某个地方有这个代码,你会看到语法错误:

<? if(condition): ?>
<?php else: ?>
<?php endif ?>
于 2009-10-12T03:05:03.013 回答
0

是的,PHP 5.3 允许控制结构的替代语法,包括您的条件语句。

我建议尝试通过在一个或两个地方用常规语法替换替代语法来进行调试,看看它是否能解决问题。如果是这样,那么您肯定知道问题出在哪里。

于 2009-10-12T02:58:26.380 回答