PHPUnit从不使用正确的include\u路径

PHPUnit从不使用正确的include\u路径,phpunit,Phpunit,我最近在Mac(10.8.3)(运行PHP5.4.7)上安装了PHPUnit。例如,当我尝试运行一个测试phpunit testfile.php时,我收到: 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 F

我最近在Mac(10.8.3)(运行PHP5.4.7)上安装了PHPUnit。例如,当我尝试运行一个测试
phpunit testfile.php
时,我收到:

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
正确列出包含路径中的pear目录:

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

然而当我
var_dump(get_include_path())时
PHPUnit/Autoload.php
文件的内部,它打印
就像它是空的一样

相反,转储
php\u ini\u loaded\u file的值只会返回
false

使用
php-i | grep php\.ini
php--ini
仅显示正在使用/加载的一个php.ini:

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

我重复了include_路径的var_转储和从命令行运行的简单test.php文件加载的_ini_文件,它们打印出正确的信息。因此,与phpunit有关的某些内容没有加载正确的/any php.ini


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

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


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

解决方案是:

跑步后

`pear config-get php_bin` -i | grep -E Configuration\ File\|include_path
这表明Pear使用的ini路径与php cli不同:

Configuration File (php.ini) Path => /etc
Loaded Configuration File => (none)
include_path => .: => .:
事实证明,Pear是由PHP的原始/默认Mac OS副本配置的,而不是由我后来安装的自定义版本配置的

一个可能不是最好的长期快速修复方法是将它试图查找的ini文件符号链接:

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

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


最后,我需要重新安装/重新配置Pear以使用我加载的php版本。

配置文件(php.ini)Path=>/usr/local/apache/lib Loaded Configuration File=>/usr/local/apache/lib/php.ini——这是我仅有的一个配置文件,也是在使用
php-I | grep php\.ini
-和
php--ini
时显示的配置文件。我重复了include_路径的变量转储,并从我运行的一个简单test.php文件中加载了_ini_文件从命令行打印出正确的信息。因此,与phpunit相关的一些内容没有加载正确的/any php.ini.interest。我找到了一些可能有用的配置选项,请查看答案以了解详细信息。我已经尝试使用xml配置文件,并且还尝试通过
--include_path
传递路径,但都没有任何结果。