2016-02-05 161 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這裏