我在Linux服务器上有一个以<?
开头的Web应用程序
我需要将此应用程序复制到Windows环境,一切正常,但SQL语句的呈现方式不同。我不知道这是否与以<?php
而不是<?
开头的脚本有关,因为我不知道从哪里启用<?
的PHP.ini
所以我把它改成了<?php
我知道这两个语句应该是相同的,但我需要用<?
测试它,以确保应用程序完全相同。这样我就可以消除另一种可能性。
谢谢
如果你编辑你的php.ini文件,记得重新启动你的服务(apache2等),以便对php.ini进行编辑才能生效
对于Wamp Server用户,有更简单的方法:您可以在WampServer图标上单击(左)单击一次,选择PHP - > PHP设置 - >短打开标记。等待一秒钟,然后WampServer将自动重启您的PHP及其Web服务。
; 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
如果使用xampp,你会注意到php.ini文件有两次提到short_open_tag。启用第二个short_open_tag = On。第一个被注释掉了,您可能想要取消注释并编辑它,但它会被第二个short_open_tag覆盖
如果您在Windows中使用xampp,请执行以下操作
使用ctrl + f实用程序查找short_open_tag
你会发现;short_open_tag
请从行中删除分号(;)。
并保持为short_open_tag = on
最后,重新启动Apache服务器
要使用php-fpm为特定域启用short_open_tag,您必须编辑:
/etc/php5/fpm/pool.d/xxxxxxxxxx.conf
其中xxxxx是域的套接字号。
并添加:php_value [short_open_tag] =开
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)(内置:12月6日2018 22:30:44)(NTS))上将short_open_tag更改为On,但它没有反映php信息页面和代码。所以我引用了可能的文档,并在我的案例中找到了解决方案。在short_open_tag之后添加一个额外的行as_atgs = 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
short_open_tag = On
在php.ini
并重新启动Apache服务器。
在文件asp_tags = On
和short_open_tag = On
中设置\apache\Apache2.2.21\bin\php.ini
和\bin\php\php5.3.8\php.ini
,然后重新启动apache服务器。
这可以通过在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中启用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
谢谢
要在Ubuntu上设置从Vagrant安装脚本打开的短标记:
sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php5/apache2/php.ini
我可以看到上面的所有答案都只是部分正确。实际上所有21世纪的PHP应用程序都将拥有FastCGI Process Manager(php-fpm),所以一旦你将php-info()添加到你的test.php脚本并检查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
你需要打开short_open_tag。
short_open_tag = On
就这么简单,请按照以下步骤操作:
所以,short_open_tag =开
在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
如果您使用Ubuntu
和Apache+php5
,那么在当前版本中有2个地方需要更改为short_open_tag = On
/etc/php5/apache2/php.ini
- 这是通过您的Web服务器(Apache)加载的页面/etc/php5/cli/php.ini
- 从命令行启动php文件时使用此配置,例如:php yourscript.php
- 直接在服务器上手动或cronjob执行php文件。