phpunit require_once()错误

时间:2009-10-06 23:43:30

标签: php installation phpunit filepath php-ini

我最近通过pear安装程序在我的服务器上安装了phpunit。

当我去进行测试时,我收到以下错误:

  

PHP警告:require_once(PHPUnit / Util / Filter.php):无法打开流:第44行/ usr / bin / phpunit中没有此类文件或目录

     

PHP致命错误:require_once():在第44行的/ usr / bin / phpunit中打开所需的'PHPUnit / Util / Filter.php'(include_path ='。:/ usr / bin / php')失败

在做了一些搜索之后,我尝试对服务器上的php.ini文件中的include_path进行一些修改。但这没有做到。

知道可能导致这种情况的原因吗?

17 个答案:

答案 0 :(得分:123)

更新:截至2013年11月和Ubuntu 12.04这两个命令应该足够了:

sudo pear config-set auto_discover 1
sudo pear install pear.phpunit.de/PHPUnit

以下是较旧的答案。 这是一个众所周知的问题,虽然差不多一年半过去了。在这里阅读它

The code coverage must be installed in order for phpunit to work properly

此处介绍了您需要做的事情:

code coverage installation through PEAR

基本上你必须输入(如果你没有权限,请使用sudo,已经安装了phpunit):

pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear install phpunit/PHP_CodeCoverage

答案 1 :(得分:34)

我在OS X上遇到了这个问题。使用以下命令修复了它,这些命令强制重新安装所有的php依赖项,其中包括一些尚未配置的其他通道的包:

sudo pear channel-discover pear.symfony-project.com
sudo pear channel-discover components.ez.no
sudo pear install --alldeps phpunit/PHPUnit

答案 2 :(得分:13)

https://bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544

特别是对ubuntu 11.04的评论,也可能是其他一些评论

尽管我按照上面的建议做了一些步骤,但我没有让它起作用,但是在我将梨从1.9.1升级到1.9.2后,它的工作完全正常,只需这样做

#p> speshu @ speshu-laptop:〜$ sudo pear升级梨

   downloading PEAR-1.9.2.tgz ...
   Starting to download PEAR-1.9.2.tgz (295,120 bytes)
    .....................................................done: 295,120 bytes
    upgrade ok: channel://pear.php.net/PEAR-1.9.2
    PEAR: Optional feature webinstaller available (PEAR's web-based installer)
    PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
    PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
    PEAR: To install optional features use "pear install pear/PEAR#featurename"

答案 3 :(得分:8)

如果您是第一次使用PEAR,可能还没有配置包含路径。看看appropriate section in the PEAR manual

答案 4 :(得分:4)

https://github.com/sebastianbergmann/php-code-coverage

sb@ubuntu ~ % pear channel-discover pear.phpunit.de
Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded

sb@ubuntu ~ % pear channel-discover components.ez.no
Adding Channel "components.ez.no" succeeded
Discovery of channel "components.ez.no" succeeded

sb@vmware ~ % pear install phpunit/PHP_CodeCoverage
downloading PHP_CodeCoverage-0.9.0.tgz ...
Starting to download PHP_CodeCoverage-0.9.0.tgz (108,376 bytes)
.........................done: 108,376 bytes
install ok: channel://pear.phpunit.de/PHP_CodeCoverage-0.9.0

答案 5 :(得分:2)

就我而言,我通过将/usr/share/php/PEAR添加到include_path来解决这个问题。

我正在使用Ubuntu 10.04.2。

答案 6 :(得分:2)

如果您安装了过时或不完整的PHPUnit,也会发生这种情况。请注意,在设置PEAR后,您必须添加PHPUnit.de channel才能获得最新的包。

答案 7 :(得分:2)

我找到了它!

看起来PEAR在/ usr / share / pear中安装了PHPUnit。不知道为什么,但那就是它。必须是(mt)的东西。

无论如何,我已经准备好了。谢谢你的帮助。

答案 8 :(得分:2)

  

(include_path中= ':在/ usr /斌/ PHP')

确定是否已将其添加到include_path?

如果我们看到您的ini文件以及其中的include_path代码段,它也可能会有所帮助......

答案 9 :(得分:1)

如果您在访问组件时遇到问题,请尝试其他方式。

  1. 安装梨

    sudo apt-get install php-pear
    
  2. 使用pear安装phpunit

    pear config-set auto_discover 1
    pear install pear.phpunit.de/PHPUnit
    
  3. 安装phpunit / Selenium,但首先需要安装curl模块

    sudo apt-get install php5-curl 
    pear install phpunit/PHPUnit_Selenium
    

答案 10 :(得分:0)

我遇到了同样的问题。 Netbeans报告称phpunit版本太旧了(事实并非如此)。直接运行phpunit脚本会显示上述消息。

我解决了这个问题:

include_path=".:/usr/share/php"

/etc/php5/cli/php.ini

请注意php.ini文件是用于php CLI(命令)的文件而不是用于apache的php.ini文件!

答案 11 :(得分:0)

我原来的问题是我无法获得php的命令行版本(yum install php或yum install php-cli)升级到=> php5.2.7我被困在5.1版本

我已经编译了php 5.3.3以便与apache一起使用。所以我在/ var / php5 / bin / php中设置了/ usr / bin / php(命令行默认)到我编译版本的符号链接,以获取命令行php报告5.3.3

然后我重新开始了phpunit的梨安装步骤

但是当我运行phpunit时,它仍然需要代码覆盖率。

所以我在/ var / php5 / lib / php / PHP / CodeCoverage下搜索代码覆盖率并将其添加到php.ini中的include路径 include_path中= “:在/ var / PHP5 / LIB / PHP /”

确保在没有/ PHP的情况下将其添加到包含路径,因为phpunit从PHP /(通知上限)开始查找代码覆盖率 无法打开所需的'PHP / CodeCoverage / Filter.php'

答案 12 :(得分:0)

我有这个问题。我正在开发一个zend框架网站。最后,我设法通过删除zend安装并删除/注释apache和cli中的bath php.ini文件中的include路径来解决它。要使用zend开发站点,我们不需要安装zend。我们可以将库复制到我们的站点文件夹

答案 13 :(得分:0)

对我来说,多次分批测试有帮助。

答案 14 :(得分:0)

您可以通过在PEAR中重新定义环境变量来解决此问题。 这就是我解决问题的方法,我使用的是Ubuntu 12.10

http://rkrants.blogspot.in/2013/01/installing-phpunitpear-in-ubuntu-1210.html

简而言之,它定义路径,然后重新安装phpunit

答案 15 :(得分:0)

Ubuntu 12.04:

sudo pear channel-discover pear.symfony.com
sudo pear install --alldeps phpunit/PHPUnit

答案 16 :(得分:0)

我在Windows 8中遇到了同样的问题 与最佳答案类似,我需要启动命令行,但请确保以管理员身份运行cmd.exe 。然后是两个命令

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit