在全新安装的运行PHP 7.2.14的Fedora 28上,我遇到一个奇怪的问题,即主php.ini中的short_open_tag = On
被忽略了。我已经验证了仅在主php.ini(/etc/php.ini)中只有一个标志实例。我尝试使用php_value short_open_tag 1
在.htaccess中将标志设置为on。每次更改后,我都重新启动了Apache。但是,当我使用phpinfo()进行验证时,标记始终设置为Off。此标志是否最终已被弃用,并且更改根本没有反映在PHP更改日志(http://php.net/ChangeLog-7.php)中?浏览PHP源代码(我不是专家)并不建议重写,因此我无所适从。任何见识将不胜感激。
答案 0 :(得分:3)
我首先要注意,这个问题看起来像是this one的重复。并非偶然,这是我最好的答案。
PHP文档的开头标记上有一个page,内容为:
PHP还允许短开放标签<? (不建议使用此方法,因为只有在使用short_open_tag php.ini配置文件指令启用此功能时,或者如果使用--enable-short-tags选项配置了PHP,该功能才可用。)
选中phpinfo()
,您可能会看到标题为配置命令的部分,其中包含编译选项。查看那里是否有--enable-short-tags
选项。如果不是,请听@phil并查找标题为已解析的其他.ini文件的部分,其中可能列出已被解析的其他ini文件。
如果您的搜索如您在原始帖子中所建议的那样彻底,而您仍然无法获得短标签,则可以在apache配置文件中将其关闭,或者short_open_tag
指令可能存在多个位置。 PHP.ini指令将覆盖可能已设置的所有先前值。
grep搜索可能会有所帮助。在我的PHP信息输出中,我看到了以下值:
已加载的配置文件-/etc/php5/apache2/php.ini
扫描此目录以查找其他.ini文件-/etc/php5/apache2/conf.d
我可以使用以下grep命令轻松搜索该位置的所有文件:
grep -ir 'short_open_tag' /etc/php5/apache2
如果您对所有这些ini文件进行了两次/三次检查,然后重新启动apache,但仍无法使short_open_tag设置正常工作,则可以将该值设置为apache选项。我建议在apache配置文件中搜索对short_open_tag
的任何引用。目录的确切位置在您的计算机上可能有所不同,但是此grep命令对我有用
grep -ir 'short_open_tag' /etc/apache2
您还应该记住,您的apache配置可能不会被设置为甚至困扰.htaccess文件,因此除非您将apache配置为实际使用.htaccess文件,否则尝试使用.htaccess进行覆盖可能是徒劳的。假设您的apache配置确实困扰您的htaccess文件,则SO上的another question中似乎涵盖了该文件。
最后,如果服务器配置为使用PHP-FPM,则它将使用PHP进程池来处理来自Web服务器的PHP请求。如果是这种情况,则需要使用以下命令重新启动php-fpm:
sudo service php7.0-fpm restart
注意::此命令在不同的计算机上可能会有所不同。