PHPUnit和Ubuntu - 使用PEAR安装后包含路径的问题

时间:2013-05-20 19:38:13

标签: php phpunit

我需要在我的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.phpphp/PHPUnit/都存在php/File/Iterator/

  • 我加载的php.ini文件位于`/etc/php5/cli.php.ini1,经

    验证
    php --info | grep "onfiguration"
    

任何其他建议将不胜感激。

3 个答案:

答案 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放在我的路径中。)