2013-05-20 92 views
1

我需要在Ubuntu盒子上为web dev项目安装PHPUnit,但存在严重问题。从各种渠道利用的建议,我已经通过pear安装并试用了以下内容:PHPUnit和Ubuntu - 使用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

将'/ usr/share'添加到包含路径 – Orangepill

+0

您可能会在[AskUbuntu](http://askubuntu.com/)上得到更快或更好的答案。 –

+0

@Orangepill,没有工作。 – Jason

回答

2

搜索计算机上的文件,该文件被称为Autoload.php,并在文件结构是这样的: ../File/Iterator/Autoload.php

现在打开抛出错误(/usr/share/php/PHPUnit/Autoload.php你的情况)文件,包括set_include_path声明指向该文件的绝对路径。

您似乎有一个非常类似的问题,我在Mac OSX上遇到的问题。欲了解更多信息请看这very similar question。如果所有这些都不起作用,请尝试使用Composer进行安装,我听说它没有这个问题。

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命令行工具。

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,比测试...)

即使在当前的Ubuntu 14.04.2服务器,回购卡住了一个过时的PHPUnit 3.7.28“稳定”,所以我回避操作系统提供一个这个习俗安装不会冲突(我没有把~/.composer/vendor/bin放在我的路径)。