【问题标题】:<? ?> tags not working in php 5.3.1<? ?> 标签在 php 5.3.1 中不起作用
【发布时间】:2011-01-29 09:12:55
【问题描述】:

我刚刚在我的 linux 服务器中安装了 php 5.3.1,现在我以前用标签编写的旧工作根本无法正常工作..

请帮帮我.. 我该如何解决这个问题??

【问题讨论】:

    标签: php php-shorttags


    【解决方案1】:

    要启用短标签,请通过以下方式之一启用short_open_tag ini 指令(很可能并非所有这些都适合您):

    • 在您的 php.ini 中设置指令 short_open_tag = On推荐方式);
    • 在您的代码中调用ini_set("short_open_tag", 1);
    • 将以下行添加到您的 .htaccess 文件中:

      php_value short_open_tag 1


    更多解释:

    不建议您使用短标签 (&lt;? ?&gt;)。您应该使用全长标签 (&lt;?php ?&gt;)。短语法已被弃用,如果您想让您的应用程序可移植,可能在另一台服务器上不允许短打开标签,因此您的应用程序将中断。

    另一方面,echo 简写&lt;?= $var ?&gt;enabled by default since PHP 5.4 regardless of php.ini settings,不会被弃用。你可以用它来代替&lt;?php echo $var; ?&gt;

    对于默认行为:

    ------------------------------------------------
    php.ini values : short_open_tag
    ------------------------------------------------
    
    PHP 4, 5_0
     * Default behaviour   : on
     * php.ini-dist        : on
     * php.ini-recommended : on
    
    PHP 5_1, 5_2:
     * Default behaviour   : on
     * php.ini-dist        : on
     * php.ini-recommended : off
    
    PHP 5_3:
     * Default behaviour   : on
     * php.ini-development : off
     * php.ini-production  : off
    

    以及不鼓励短打开标签的原因:

    该指令决定 PHP 是否将
    &lt;??&gt; 标记之间的代码识别为 PHP 源代码,应该这样处理。已经
    几年来建议您不要使用短标签“捷径”和
    而是使用完整的 &lt;?php?&gt; 标签组合。随着广泛使用 XML 和其他语言使用这些标签,服务器可以变得很容易
    困惑并最终在错误的上下文中解析错误的代码。但是因为
    这个快捷方式已经存在很长时间了,目前仍然是
    支持向后兼容,但我们建议您不要使用它们。

    还要注意这个拒绝的关于模板短开放标签的 RFC:http://wiki.php.net/rfc/shortags

    【讨论】:

    • 正如另一种观点,没有一个理由可以避免非常有用的&lt;?= ?&gt; 语法。从 php6 开始,这不是真的。不要再散布这种疯狂的谣言
    • @Col 使用 而不是 = ?>。像许多其他人一样,我也遇到过短标签的问题。你永远不知道你的代码将在哪里运行,所以为了安全起见,使用 几个额外的字节不会杀死你:)
    • @Col。弹片:你有消息来源说这不是真的吗?从我掌握的信息看来,它至少已被弃用。
    • 是否有来源表明这是真的?从您上面链接的同一讨论中,您得到的不亚于 Rasmus 自己的话“我们决定不在 PHP 6 中删除它们”。
    • @Col。 Shrapnel:好吧,我想到目前为止我还是会坚持这个stackoverflow.com/questions/2413661/…,你为什么不想出这个?我只能说我知道的。现在我不得不寻找一个确认你是对的,尽管你可以把它给我。这就是我所要求的。这就是为什么我认为您对此也不确定。否则你可能只是说“这里读这个”,讨论就会结束。
    【解决方案2】:

    看起来您在 php.ini 文件中将 short_open_tags 设置为“关闭”。 尝试将其设置为“开启”并重新启动 apache。

    【讨论】:

      【解决方案3】:

      您很可能需要在 PHP 配置文件中打开短标签。在不知道您的配置的情况下,我无法说出您在哪里可以找到它,但您正在寻找 php.ini(很可能是 /etc/php.ini 之类的地方)。

      在那里,您所追求的设置是short_open_tags。有关 PHP 的所有核心配置设置,请参见 here。然而,正如其他人所提到的,使用短标签可能不是最好的策略。 Here 很好地讨论了原因(赞成和反对)。

      【讨论】:

      • 很好的讨论,有错误的理由。
      • @Col。弹片:怎么会?由于那里描述的一些原因,我倾向于总是喜欢长标签而不是短标签。老实说,我认为这至少部分取决于个人喜好。只要你意识到这两种方式的含义,你就可以使用你想要的。
      • 我现在不是在谈论编码偏好,我在谈论虚假谣言。
      【解决方案4】:

      也许您的新配置不允许使用短标签。只需使用&lt;?php ?&gt;。无论如何,这是更好的做法。

      如果您仍想使用它们,您可以使用short_open_tag 指令。另请注意,如果您禁用了短标签,这将不起作用。

      这样做的主要原因是您可以使用内联 Xml 标签。

      【讨论】:

      • 实际上,如果您的代码要在您无法控制的其他服务器上运行。使用 将确保可移植性。
      • 可能是一个原因。但以自己的判断,不严格推荐。实际上,大多数代码都不是为了广泛而编写的。并且有多种模板系统可供选择。如果有人使用 PHP 作为模板系统,那么使用长标签就是荒谬的。只需选择另一个模板系统,完全忘记这个问题
      【解决方案5】:

      如果您使用 wamp 或 xamp,激活它们真的很容易。 只需点击icon->php server->setting->allow short tag open

      最好不要使用此功能。例如 xml 使用相同的方式打开文档中的标题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        • 2017-01-13
        • 1970-01-01
        • 2014-05-11
        相关资源
        最近更新 更多