我需要在我的Ubuntu盒子上为web开发项目安装PHPUnit,但是我遇到了严重的问题。使用各种来源的建议,我已经通过pear
安装并尝试了以下内容:
目前,phpunit --version
返回
PHPUnit 3.7.20 by Sebastian Bergman
在/usr/share
时,但在其他地方抛出错误。
我的include path
是
include_path = ".:/usr/share/php:/usr/share/php/PEAR:/usr/share/php/File/Iterator"
我尝试过不同的变体,从简单的/usr/share/php
到上面的完整字符串。 PEAR
全部上限,因为它是它所在的文件夹。
执行测试用例导致
PHP Warning: require_once(File/Iterator/Autoload.php): failed to open stream:
No such file or directory in /usr/share/php/PHPUnit/Autoload.php on line 64
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpunit:0
PHP 2. require() /usr/bin/phpunit:43
PHP Fatal error: require_once(): Failed opening required
'File/Iterator/Autoload.php'(include_path='/usr/share/php/libzend-framework-php')
in /usr/share/php/PHPUnit/Autoload.php on line 64
pear list -c phpunit
返回
Installed packages, channel pear.phpunit.de:
============================================
Package Version State
File_Iterator 1.3.3 stable
PHPUnit 3.7.20 stable
PHPUnit_MockObject 1.2.3 stable
PHP_CodeCoverage 1.2.10 stable
PHP_Invoker 1.1.2 stable
PHP_Timer 1.0.3 stable
PHP_TokenStream 1.1.5 stable
Text_Template 1.1.2 stable
我已确认Autoload.php
和php/PHPUnit/
都存在php/File/Iterator/
我加载的php.ini
文件位于`/etc/php5/cli.php.ini1,经
php --info | grep "onfiguration"
任何其他建议将不胜感激。
答案 0 :(得分:2)
在您的计算机上搜索名为Autoload.php的文件,该文件的文件结构如下:
../File/Iterator/Autoload.php
现在打开抛出错误的文件(在您的情况下为/usr/share/php/PHPUnit/Autoload.php
)并包含指向该文件的绝对路径的set_include_path
语句。
您似乎与我在Mac OSX上遇到的问题非常相似。有关详细信息,请查看此very similar question。如果所有这些都没有帮助,请尝试安装Composer,我听说没有这个问题。
答案 1 :(得分:0)
对于最近的项目,我使用Composer来安装PHPUnit和其他相关工具。这很容易:
## ... rest of the composer.json file
# "php -f composer.phar update --dev" to install
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
我还有一个shell脚本,可以从./vendor/bin/目录中实际运行PHPUnit命令行工具,其中安装了本地安装脚本的链接。
答案 2 :(得分:0)
赞Alister的答案,依赖于Composer, 但我更喜欢在我的项目中全局部署更新的PHPUnit:
composer.phar global require "phpunit/phpunit=dev-master"
这样,当我在Symfony项目的根目录时,我可以运行
~/.composer/vendor/bin/phpunit -c app/ -v --filter testFireNotifications |tee phpunit.log
- filter 的最后一点是选择性地运行某些东西(实际上,更多是通过crontab实现快速Web自动化,而不是测试......)
即使在当前的Ubuntu 14.04.2服务器上,repo也会遇到过时的PHPUnit 3.7.28" stable"所以我回避了这个自定义安装的操作系统提供了一个赢得'冲突(我没有把~/.composer/vendor/bin
放在我的路径中。)