phpunit require_once()错误


79

我最近通过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进行一些修改。但这还没做。

知道是什么原因造成的吗?

Answers:


123

更新:从2013年11月和Ubuntu 12.04开始,这两个命令就足够了:

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

以下是一个较旧的答案。尽管已经过去了将近一年半,但这是一个已知的问题。在这里阅读

为了使phpunit正常工作,必须安装代码覆盖率

您需要做的事情涵盖在这里:

通过PEAR安装代码覆盖率

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

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

ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_php" ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_data"在最后一步出错。
伊莱(Eray)

6
对我来说,正确的解决方案是在您提供的第一个链接中:bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544/comments/…– EnigmaCurry 2011
6

2
我不得不设置include_path中在这两个的php.ini文件/etc/php5/apache2/php.ini/etc/php5/cli/php.ini以及不得不让包括父母和子目录:include_path = ".:/usr/share/php:/usr/share/php/PEAR"
灶台

7
在Ubuntu 12.04上,我还必须输入sudo pear channel-discover pear.symfony.com然后成功完成sudo pear install --alldeps phpunit/PHPUnit
skierpage 2012年

2
做记录! You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. ...这将使该答案无效。
Madbreaks 2014年

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

这是在Ubuntu 11.10中对我有用的唯一解决方案。
mpen 2012年

4
Nvm。它安装得很好,但是当我尝试运行任何实际测试时,我得到了PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Framework.php on line 46
mpen 2012年

2
对于我来说,我这样做了,然后得到了一个错误,我认为可以通过stackoverflow.com/a/9186866/470749 Ubuntu 12.04
Ryan

1
不适用于我-我需要channel-discover pear.phpunit.de能够安装phpunit / phpunit,然后require_once(PHPUnit/Util/Filter.php)出现错误...文件在我的文件系统上不存在。
ashgromnies,2014年

做记录! You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. ...这将使该答案无效。
Madbreaks 2014年

13

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

特别是针对ubuntu 11.04的评论,也可能适用于其他评论

即使我按照上面的建议执行了这些步骤,也没有使它正常工作,但是在我将梨从1.9.1升级到1.9.2后,它的运行非常完美,只需执行此操作即可

speshu @ speshu-laptop:〜$ sudo pear升级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"

我一安装PHPUnit并仍然收到错误,就这样做了,但是@StevenGreen的回答对我有帮助=),但是可以指出的是可以的=)
Metafaniel 2012年


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

2

(include_path ='。:/ usr / bin / php')

确定将其添加到include_path吗?

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


是的,我已经尝试过这条路。这里的注释限制为600个字符,因此我不确定如何向您显示我的ini文件。include_path =“。:/ usr / bin / php”
user185305

/ usr / bin是可执行文件所在的位置,而不是库。
Alister Bulman

2

我找到了!

看起来PEAR在/ usr / share / pear中安装了PHPUnit。不知道为什么,但这就是事实。必须是(mt)事物。

无论如何,我都准备好了。谢谢您的帮助。



2

就我而言,我通过添加/usr/share/php/PEAR到解决了include_path

我正在使用Ubuntu 10.04.2。


1

如果您在访问组件时遇到问题,请尝试另一种方法。

  1. 安装梨

    sudo apt-get install php-pear
    
  2. 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
    

0

我遇到了同样的问题。Netbeans报告说phpunit版本太旧了(不是)。直接运行phpunit脚本会显示上述消息。

我解决了添加:

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

/etc/php5/cli/php.ini

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


0

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

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

然后,我取消了phpunit的pear安装步骤

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

因此,我在/ var / php5 / lib / php / PHP / CodeCoverage下搜索了代码覆盖率,并将其添加到php.ini中的include路径include_path =“。:// var / php5 / lib / php /”

确保将其添加到不带/ PHP的包含路径中,因为phpunit从PHP /(注意上限)开始,以查找代码覆盖率未能打开所需的“ PHP / CodeCoverage / Filter.php”


0

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




0

Ubuntu 12.04:

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

0

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

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.