PHP short_open_tag 无法启用(CentOS 6)

PHP short_open_tag 无法启用(CentOS 6)

我正在设置运行在 CentOS 6 上的 Apache2、PHP 5.3.3 服务器。我的 Web 应用程序使用短标签<?<?=。我似乎无法启用短标签。当我运行时,phpinfo()我看到了short_open_tag = off,但是在/etc/php.ini我有这个:(short_open_tag = on是的,我已经重新启动了服务器)。

我也尝试过<?php ini_set('short_open_tag','1'); ?>在页面开始时使用,但它仍然无法解析短标签中的代码。

我唯一能想到的就是php.ini在某个地方有另一个文件正在被用来代替或覆盖该文件/etc/php.ini

有什么建议吗?

答案1

我手头有一个相当默认的 CentOS 6.3 系统,其中装有 PHP 5.3.3,它按预期运行。更改 /etc/php.ini 中的 short_open_tags 值并重新启动 httpd 服务即可。

PHP 还会读取文件,/etc/php.d因此请检查它是否在其中一个文件中被覆盖。

如果你想检查其他 php.ini 文件,那么

find / -name php.ini 

更多信息,short_open_tag 的值也可以在 .htaccess 文件中设置

php_value short_open_tag On

答案2

最有可能的是,您启用了 eAccelerator 或类似程序。预编译页面不会被处理,因此只需清除 eAccelerator 缓存,或(丑陋地)卸载 eAccelerator,重新启动 Apache,重新安装 eAccelerator,重新启动 Apache。

答案3

还要确保

  • .htaccess脚本中没有文件包含short_open_tag可能存在冲突的指令(就我而言,上级目录中的这个文件是问题的根源)

答案4

在 centos6 上 /etc/php.ini 应该是这个位置,确保它没有在文件中多次定义。

默认情况下,“快速参考”部分中有标签的描述:

; short_open_tag
;   Default Value: On
;   Development Value: Off
;   Production Value: Off

不要在那里添加标签,因为它稍后会在“语言选项”部分中设置(它会覆盖您的设置):

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It's been
; recommended for several years that you not use the short tag "short cut" and
; instead to use the full <?php and ?> tag combination. With the wide spread use
; of XML and use of these tags by other languages, the server can become easily
; confused and end up parsing the wrong code in the wrong context. But because
; this short cut has been a feature for such a long time, it's currently still
; supported for backwards compatibility, but we recommend you don't use them.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://www.php.net/manual/en/ini.core.php#ini.short-open-tag
short_open_tag = Off

相关内容