PHPUnit require_once() 错误

79

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

当我尝试运行一个测试时,出现以下错误:

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

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

经过一些搜索后,我尝试对服务器上的php.ini文件中的include_path进行一些修改。但这并没有起到任何作用。

您有什么想法可能会导致这种情况?

17个回答

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

6
对我来说正确的解决方案在你提供的第一个链接中:https://bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544/comments/6 - EnigmaCurry
2
我必须在两个php.ini文件中设置include_path,即/etc/php5/apache2/php.ini/etc/php5/cli/php.ini,并且必须使其包括父目录和子目录:include_path = ".:/usr/share/php:/usr/share/php/PEAR" - hobs
7
在Ubuntu 12.04上,我还需要输入 sudo pear channel-discover pear.symfony.com,然后才能成功执行 sudo pear install --alldeps phpunit/PHPUnit - skierpage
通过更新php.ini路径以包括安装phpunit的位置来解决问题,如Jeroen的答案所述。 - MrDaniel
2
请注意!您已经通过PEAR安装了PHPUnit。这种安装方法不再受支持,http://pear.phpunit.de/将在2014年12月31日或之前关闭。这将使本答案无效。 - Madbreaks
显示剩余6条评论

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
4
没事了,安装很顺利,但是当我尝试运行任何实际测试时,会出现“PHP致命错误:在/usr/share/php/PHPUnit/Framework.php的第46行中调用未定义的方法PHP_CodeCoverage_Filter::getInstance()”。 - mpen
2
对我来说,我做了这个然后遇到了一个错误,我认为可以通过https://dev59.com/KWox5IYBdhLWcg3wekIr#9186866 Ubuntu 12.04解决。 - Ryan
1
对我没用——我需要运行channel-discover pear.phpunit.de才能安装phpunit/phpunit,然后我遇到了require_once(PHPUnit/Util/Filter.php)的错误……我的文件系统中根本没有这个文件。 - ashgromnies
请注意!您已经通过PEAR安装了PHPUnit。这种安装方法不再受支持,http://pear.phpunit.de/将在2014年12月31日或之前关闭。这将使得此答案无效。 - Madbreaks

13

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

特别是针对Ubuntu 11.04以及可能适用于其他一些版本的情况。

尽管我按照上面推荐的步骤进行了操作,但我仍然无法使其正常工作,但在我将pear从1.9.1升级到1.9.2之后,它完美地运行了。只需执行以下操作:

speshu@speshu-laptop:~$ sudo pear upgrade 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

8

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

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


2
在我的情况下,我通过将/usr/share/php/PEAR添加到include_path中来解决了这个问题。我使用的是Ubuntu 10.04.2操作系统。

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已经将PHPUnit安装在/usr/share/pear目录下。不确定为什么,但就是在那里。可能是(mt)的原因。

总之,我已经准备好了。感谢您的帮助。


1

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

  1. 安装pear

    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
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接