short_open_tag 设置被 PHPUnit 忽略

short_open_tag setting ignored by PHPUnit

我的 PHPUnit 测试在尝试测试我的(遗留代码)应用程序中以短开放标记(<? 而不是 <?php)开头的任何 .php 文件时总是失败.

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

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

一般解

1) 检查加载了哪个 php.ini 文件(命令行:php --ini

2a) 在 php ini 文件中设置:short_open_tag = on

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

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

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

(我仍然不确定为什么 PHPUnit 使用另一个 php.ini,但我认为这超出了这个问题的范围。)

PHP单元使用PHP-cli模块PHP。 PHP-cli 有另一个 .ini 文件用于配置。我使用的是 ubuntu 14.04,就我而言

/etc/php5/apache2/php.ini //used for web compiler

/etc/php5/cli/php.ini // Used for PHP-cli, you need to set short_open_tag=On here