2013-04-02 24 views
0

我最近在Mac(10.8.3)(运行PHP 5.4.7)上安装了PHPUnit。当我尝试运行例如测试phpunit testfile.php,我得到:PHPUnit从不使用正确的include_path

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or 
directory in /Users/myusername/pear/share/pear/PHPUnit/Autoload.php on line 64 

Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' 
(include_path='.:') in /Users/myusername/pear/share/pear/PHPUnit/Autoload.php on line 64 

文件,/Users/myusername/pear/share/pear/File/Iterator/Autoload.php存在。

php.ini正确地列出了包括路径梨目录:

.:/php/includes:/usr/local/apache/lib/php:/Users/myusername/pear/share/pear/

然而,当我var_dump(get_include_path());PHPUnit/Autoload.php文件里,它打印.:,如果它是空的。

倾销价值php_ini_loaded_file而不是,只需返回false

使用php -i |grep php\.iniphp --ini仅示出一个的php.ini被使用/加载:

Configuration File (php.ini) Path => /usr/local/apache/lib 
Loaded Configuration File => /usr/local/apache/lib/php.ini 

我重复include_path中的var_dumps和从I从命令行跑了简单test.php的文件中的loaded_ini_file和他们打印出正确的信息。因此,与phpunit有关的内容不会加载正确的/任何php.ini。

我没有使用任何与默认配置不同的配置 - 今天phpunit刚安装在这台机器上。

回答

1

确保您使用的php.ini文件是为cli php加载的文件。至少在Linux上安装PHP时,我有两个php.ini文件,一个位于/etc/php/cgi-php5.4/php.ini,另一个位于/etc/php/cli-php5.4/ php.ini中。如果您更改cgi版本,则默认情况下不会影响cli版本,并会导致include路径为空。


另一个要检查的地方是phpunit.xml文件。它有一个部分来指定包含路径。可用选项为See here。我不确定为什么phpunit会重置路径,但这可能是解决问题的一种方法。

+0

配置文件(php.ini)Path =>/usr/local/apache/lib Loaded Configuration File => /usr/local/apache/lib/php.ini - 这是我唯一拥有的,当使用'php -i | grep php \ .ini'并且'php --ini'不显示其他的/其他的ini文件时 – helion3

+0

我从简单的test.php文件中重复了include_path和loaded_ini_file的var_dumps我从命令行并打印出正确的信息。因此,phpunit涉及的内容不会加载正确的/任何php.ini。 – helion3

+0

有趣。我发现了一些可能有帮助的配置选项,请查看答案以了解详细信息。 – MJD

0

的解决方案是:

运行

`pear config-get php_bin` -i | grep -E Configuration\ File\|include_path 

后结果表明,梨用比PHP-CLI不同的ini路径是:

Configuration File (php.ini) Path => /etc 
Loaded Configuration File => (none) 
include_path => .: => .: 

事实证明,梨已经由PHP的原始/默认Mac OS副本配置,而不是随后安装的自定义版本。

速战速决可能不是最好的长期是符号链接它试图找到ini文件:

sudo ln -s /usr/local/apache/lib/php.ini /etc/php.ini

之后,phpunit FakeTest命令工作,并测试运行。

最终,我需要重新安装/重新配置梨与我已加载的PHP版本一起工作。