我在Linux服务器上有一个web应用程序,以<?
我需要将这个应用程序复制到windows环境中,一切工作正常,除了SQL语句呈现不同。我不知道这是否与以<?用PHP代替<?因为我不知道从哪里启用<?所以我把它改为<?php
我知道这两个语句应该是相同的,但我需要用<?以确保应用完全相同。这样我就可以排除另一种可能性。
谢谢
我在Linux服务器上有一个web应用程序,以<?
我需要将这个应用程序复制到windows环境中,一切工作正常,除了SQL语句呈现不同。我不知道这是否与以<?用PHP代替<?因为我不知道从哪里启用<?所以我把它改为<?php
我知道这两个语句应该是相同的,但我需要用<?以确保应用完全相同。这样我就可以排除另一种可能性。
谢谢
这可以通过在php.ini中启用short_open_tag来实现:
short_open_tag = on
如果你没有访问php.ini,你可以尝试通过。htaccess文件启用它们,但如果你是在共享主机上,主机公司可能会禁用它:
php_value short_open_tag 1
对于那些认为short_open_tags在php5.4中是不好的做法的人来说,<?=……> shorttag在任何地方都将被支持,不管设置如何,所以如果你可以控制服务器上的设置,没有理由不使用它们。在这个链接中还提到:short_open_tag
在\apache\Apache2.2.21\bin\php.ini和\bin\php\php5.3.8\php.ini文件中设置asp_tags = On和short_open_tag = On,然后重新启动apache服务器。
对于Wamp服务器用户有一个更简单的方法: 您可以启用该设置,只需(左)点击WampServer图标,选择PHP -> PHP设置->短打开标签。等待一秒钟,WampServer将自动重新启动PHP和它的web服务。
原文:http://osticket.com/forums/showthread.php?t=3149
这可以通过在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。默认情况下它是关闭的,把它改为打开。
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,请按以下步骤操作
打开XAMPP控制面板。 点击CONFIG按钮。 进入PHP (PHP .ini)选项。
使用ctrl+f实用程序找到short_open_tag
您将找到;short_open_tag
请从行中删除分号(;)。
并将其保留为short_open_tag = on
最后,重新启动Apache服务器
如果你使用Ubuntu和Apache+php5,那么在当前版本中,有两个地方需要更改为short_open_tag = on
/etc/php5/apache2/php.ini -用于通过web服务器(Apache)加载的页面 /etc/php5/cli/php.ini—当您从命令行启动PHP文件时使用此配置,例如:PHP yourscript.php—用于手动或cronjob直接在服务器上执行PHP文件。
要使用php-fpm为特定的域启用short_open_tag,您必须编辑:
/etc/php5/fpm/pool.d/xxxxx.conf
其中xxxxx为域的套接字号。
add: php_value[short_open_tag] = On
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信息页面和代码。所以我参考了医生的文件,找到了解决我的问题的办法。在short_open_tag后面添加额外的一行,作为asp_tags = On,重启Apache后,它可以在代码上工作,我正确地输出
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/apache2或你的PHP版本中的PHP .ini文件
2->找到short_open_tag,并将其设置为On和删除;从开始。
short_open_tag = On
3->重启服务器
sudo service apache2 restart