我目前正在关注这个基本的Codeigniter教程,作者在此视图/ post_index.php页面中使用了此类似的代码
if (!isset($posts)){ ?>
<p> No Post to display </p>
<?php
} else {
foreach ($posts as $row){
?>
<h2> <?=$row['title']?> </h2>
<p> <?=$row['post'] ?></p>
<?php
}
}
?>
我得到一个带有此
的空白页面<h2> <?=$row['title']?> </h2>
<p> <?=$row['post'] ?></p>
在我的来源中。
但是当我使用这个
时 <h2> <?php echo $row['title']?> </h2>
<p> <?php echo $row['post'] ?></p>
我没事。它显示了我的所有帖子。我正在运行wamp(只是从网站上下载了64位和Apache 2.4,2.2E版本,除了我看不到他们拥有的所有其他4个软件包有多大差别......)
Apache版本:2.2.21
PHP版本:5.3.10
发生了什么事?
谢谢。
答案 0 :(得分:3)
这通常意味着您没有启用短标签(大多数PHP&lt; 5.4.0安装默认情况下都会启用它们)。您需要检查php.ini
文件。
在启用它们之前,我建议阅读https://softwareengineering.stackexchange.com/questions/151661/is-it-bad-practice-to-use-tag-in-php - 使用短标记语法有利有弊。
@IMSoP也提供了非常有效的说明:
具体来说,您需要short_open_tag选项 (http://www.php.net/manual/en/ini.core.php#ini.short-open-tag)已启用 如果使用PHP&lt; 5.4。从5.4开始,此设置仍然存在, 但
<?= ... ?>
案件不需要,只有潜在的案件 有问题的<? ... ?>
答案 1 :(得分:-2)
如果你想使用short_tags,你需要short_tags,你必须在application/config/config.php
$config['rewrite_short_tags'] = TRUE;`
请查看文档Codeigniter Documentation
文件清楚地说:
注意:如果您发现此页面中描述的语法不起作用 在您的服务器上,可能是您的PHP中禁用了“短标记” ini档案。 CodeIgniter可以选择性地重写短标签, 即使您的服务器不支持,也允许您使用该语法 它。可以在config / config.php文件中启用此功能。
请注意,如果您使用此功能,则表示PHP错误 在您的视图文件中遇到错误消息和行号 没有准确显示。相反,所有错误都将显示为eval() 错误。