如何启用PHP短标签?

我在Linux服务器上有一个以<?开始的web应用程序

我需要将这个应用程序复制到windows环境中,一切工作正常,除了SQL语句呈现不同。我不知道这是否与以<?php而不是<?开头的脚本有关,因为我不知道从哪里从PHP.ini启用<?,所以我将其更改为<?php

我知道这两个语句应该是相同的,但我需要用<?测试它,以确保应用程序完全相同。这样我就可以排除另一种可能性。

谢谢

617567 次浏览

short_open_tag=On

php . ini

并重新启动Apache服务器。

您需要打开short_open_tags。

short_open_tag = On

这可以通过在php . ini中启用short_open_tag来实现:

short_open_tag = on

如果你无法访问php.ini,你可以尝试通过. htaccess文件启用它们,但如果你在共享主机上,主机公司可能会禁用此功能:

php_value short_open_tag 1

对于那些认为short_open_tags是不好的做法的人从php 5.4开始,所有地方都支持<?= ... ?>短标签,不管设置如何,如果你可以控制服务器上的设置,就没有理由不使用它们。在此链接中还提到:short_open_tag

如果您编辑了php.ini文件,请记得重新启动服务(apache2等),以便对php.ini的编辑生效

\apache\Apache2.2.21\bin\php.ini\bin\php\php5.3.8\php.ini文件中设置asp_tags = Onshort_open_tag = On,然后重新启动apache服务器。

对于Wamp服务器用户有更简单的方法: 您可以启用该设置,只需(左)点击WampServer图标,选择PHP -> PHP设置->短打开标签。等待一秒钟,WampServer将自动重启你的PHP和它的web服务

源自:http://osticket.com/forums/showthread.php?t=3149

就这么简单,请遵循以下步骤:

  1. 转到php.ini文件
  2. 找到short_open_tag并将其设置为on

    short_open_tag = On
    
  3. Restart the server

这可以通过在php.ini中启用short_open_tag来实现:

1.要定位php.ini文件,在注释行执行

 php --ini

你会得到这样的东西,

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/gd.ini,
/etc/php.d/json.ini,
/etc/php.d/mcrypt.ini,
/etc/php.d/mysql.ini,
/etc/php.d/mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/zip.ini

请参见注释输出中的第二行。该文件将位于上述路径中。

2.打开php.ini文件,找到short_open_tag。默认情况下它在off中,将其更改为on

3.重新启动服务器,执行这条注释

service httpd restart

谢谢

在CentOS 6中(在CentOS 7上也进行了测试),您不能在/etc/php.ini中为php-fpm设置short_open_tag。 你会得到错误:

ERROR: [/etc/php.ini:159] unknown entry 'short_open_tag'
ERROR: Unable to include /etc/php.ini from /etc/php-fpm.conf at line 159
ERROR: failed to load configuration file '/etc/php-fpm.conf'
ERROR: FPM initialization failed

您必须编辑站点的配置,该配置可以在/etc/php-fpm.d/www.conf中找到 在文件末尾写入:

php_value[short_open_tag] =  On

如果使用xampp,您将注意到php.ini文件两次提到了short_open_tag。启用第二个short_open_tag = On。第一个被注释掉了,您可能想取消注释并编辑它,但它被第二个short_open_tag覆盖了

; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/short-open-tag
;short_open_tag=Off   <--Comment this out
; XAMPP for Linux is currently old fashioned
short_open_tag = On   <--Uncomment this

在Ubuntu上设置从Vagrant安装脚本打开短标签:

sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php5/apache2/php.ini
我可以看到上面所有的答案都是部分正确的。 实际上,所有21世纪的PHP应用程序都有FastCGI进程管理器(PHP -fpm),所以一旦你在test.php脚本中添加了PHP -info(),并检查了PHP .ini

的正确路径
Go to php.ini and set short_open_tag = On

重要提示:然后你必须重新启动你的php-fpm进程,这样才能工作!

sudo service php-fpm restart

最后重新启动nginx/http服务器

sudo service nginx restart

如果你在windows中使用xampp,请按以下步骤操作

  1. 打开XAMPP控制面板。
  2. 点击CONFIG按钮。
  3. 进入PHP (PHP .ini)选项。

使用ctrl+f实用程序找到short_open_tag

你会找到;short_open_tag

请从行中删除分号(,)

并保持它为short_open_tag = on

最后,重新启动Apache服务器

如果你正在使用UbuntuApache+php5,那么在当前版本中,有两个地方需要更改为short_open_tag = On

  1. /etc/php5/apache2/php.ini -这是通过web服务器(Apache)加载的页面
  2. /etc/php5/cli/php.ini -当你从命令行启动你的php文件时使用这个配置,比如:php yourscript.php -用于手动或cronjob直接在服务器上执行php文件。

要使用php-fpm为特定的域启用short_open_tag,您必须编辑:

/etc/php5/fpm/pool.d/xxxxxxxxxx.conf

其中xxxxx为域的套接字号。

add: php_value[short_open_tag] = On

 short_open_tag = On
php.ini < p >

sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php/7.2/apache2/php.ini

这适用于ubuntu 16上的php7.2,与上面Bradley Flood的答案相同,尽管存储配置文件的目录已经改变了。

此外,您还可以更改php字符串中的版本以匹配当前安装的版本。

我已经在我的aws centos 7实例和php7(PHP 7.0.33 (cli)(构建:2018年12月6日22:30:44)(NTS)上更改了short_open_tag Off到On,但它没有反映PHP信息页面和代码。所以我参考了医生的文件,找到了解决我的问题的办法。在重新启动Apache后,在short_open_tag后添加额外的一行作为asp_tags = On,它可以在代码上工作,我正确地输出

php . ini文件

engine = On


; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It is
; generally recommended that <?php and ?> should be used and that this feature
; should be disabled, as enabling it may result in issues when generating XML
; documents, however this remains supported for backward compatibility reasons.
; Note that this directive does not control the <?= shorthand tag, which can be
; used regardless of this directive.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/short-open-tag


short_open_tag = On


; Allow ASP-style <% %> tags
; http://php.net/asp-tags
asp_tags = On

对于docker,将此步骤添加到Dockerfile中

  ARG phpIniPath=/path/to/your/php.ini


RUN sed -i -e 's/^short_open_tag\s*=.*/short_open_tag = On/' $phpIniPath

您可以按照以下步骤进行操作:

1→进入/etc/php/7.3/apache2PHP version中的php.ini文件

2→找到short_open_tag并将其设置为On,并从启动中删除;

short_open_tag = On

3→重新启动服务器

sudo service apache2 restart