2016-02-05 160 views
1

我的PHPUnit测试在我的(遗留代码)应用程序中以短打开标记(<?而不是<?php)测试任何.php文件时仍然失败。short_open_tag设置被PHPUnit忽略

但是在我的php.ini文件中,short_open_tag设置为On

该应用程序运行良好。为什么PHPUnit会对短开标签感到不安?我查找了其他php.ini文件,只能找到/etc/php.ini。我的.htaccess文件也不会影响此设置。还有什么可能导致这种情况?

+0

只需使用'<?php'而不是'<?'... –

+0

我正在使用遗留代码,其中可能有数百至数千个短开放标记的实例,并且不可能将这种代码更改为bef矿石,我们有单元测试... – thanksd

+0

你能添加你得到的错误信息吗? – pivemi

回答

0

所以,我得到它的工作,解决方案令人沮丧:我的应用程序在虚拟机上,虚拟机中的php.ini文件具有正确的设置。但是,PHPUnit在我的本地机器上使用了php.ini文件,其中short_open_tag设置为Off。更改该设置解决了我的问题。

(我仍然不确定为什么PHPUnit的使用其他php.ini,但我认为这是这个问题的范围之外。)

4

一般溶液

1)检查其php.ini文件被加载(命令行:php --ini

2A)设置在PHP ini文件:short_open_tag = on

2B)设置在.htaccess文件:php_value short_open_tag 1

3)重新启动服务器(命令行:service httpd restart

+0

我使用phpunit.xml配置文件运行测试,并添加''标签内没有打开该设置。你知道如何使用phpunit.xml配置文件来关闭这个设置吗? – thanksd

+0

所以我发布了上面的问题:http://stackoverflow.com/questions/35277342/changing-php-ini-configuration-option-in-phpunit-xml,结果你不能改变'short_open_tag'设置在运行。所以,我不认为通过这个选择是可行的。 (虽然好的一般解决方案) – thanksd

+0

嗯,好的。我已经相应地更新了答案。 – pivemi

0

的PHPUnit使用PHP的PHP-CLI模块。而PHP-cli的配置文件还有另外一个.ini文件。我使用Ubuntu 14.04,在我的情况

/etc/php5/apache2/php.ini //用于网页编译

/etc/php5/cli/php.ini //用于PHP-CLI,需要设置short_open_tag=On这里