我正试图用MAMP在我的os x Lion上安装phpunit。我已经在/Applications/MAMP/bin/php/php5.4.4/lib/php.上安装了phpunit
当我在终端中运行phpunit时,我会得到以下错误:
警告:require_one(File/Iterator/Autoload.php):无法打开流:第45行的/usr/lib/php/pear/PHPUnit/Autoloadphp中没有这样的文件或目录
致命错误:requireonce():无法在第45行的/usr/lib/php/pear/PHPUnit/Autoload.php中打开所需的"File/Iterator/Autoload.php"(include_path='.:')
我注意到include路径是""所以我在终端中运行这个程序来查找正在加载哪个php.ini文件";php——ini";然后拿到这个
Loaded Configuration File: /Applications/MAMP/bin/php/php5.4.4/conf/php.ini
php.ini文件中的include路径是
include_path = ".:/Applications/MAMP/bin/php/php5.4.4/lib/php:/usr/lib/php/pear:/usr/bin/phpunit"
那么,为什么它会变成"在终端中运行phpunit时?
作为检查,我用以下代码创建了一个php文件:
echo get_include_path();
当我在终端中运行该文件时,它会输出php.ini文件中的include路径。
我还在/Applications/MAMP/bin/php/php5.4.4/lib/php/PHPnit/Autoload.php的顶部添加了echo get_include_path();
。当我用它在终端中运行PHPUnit时,输出的include路径是".:"
phpunit似乎正在加载一个需要修复的不同包含路径。
可能有两个PHPUnit安装,一个在/usr/lib/php/pear/
中,另一个在MAMP目录中。
如果是这种情况,那么您应该更改$PATH
,使MAMP php-bin-dir位于第一个位置。
对我来说,简单的方法就是直接从以下位置下载最新版本:https://phar.phpunit.de/phpunit.phar,然后在终端中找到文件下载的位置,并:
machine:~ username$ chmod +x phpunit.phar
machine:~ username$ mv phpunit.phar /usr/local/bin/phpunit
调整您的路径,例如在.profile:中
machine:~ username$ pico .profile
确保你有这行,如果没有,只包括:
export PATH=/usr/local/bin/:$PATH
退出并重新打开终端或:
machine:~ username$ source .profile
现在
machine:~ username$ phpunit --version
应显示的最新安装版本