【问题标题】:phpunit require_once() errorphpunit require_once() 错误
【发布时间】:2010-12-04 11:07:45
【问题描述】:

我最近通过 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 进行一些修改。但这并没有起到任何作用。

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

【问题讨论】:

    标签: php installation phpunit filepath php-ini


    【解决方案1】:

    更新:截至 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
    

    【讨论】:

    • 我在最后一步遇到ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_php" ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_data" 错误。
    • 对我来说正确的解决方案是在您提供的第一个链接中:bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544/comments/…
    • 我必须在 both php.ini 文件 /etc/php5/apache2/php.ini/etc/php5/cli/php.ini 中设置 include_path,并且必须使其包含父目录和子目录:include_path = ".:/usr/share/php:/usr/share/php/PEAR"
    • 在 Ubuntu 12.04 上,我还必须输入 sudo pear channel-discover pear.symfony.com,然后输入 sudo pear install --alldeps phpunit/PHPUnit 成功
    • 注意! 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. ...这将使这个答案无效。
    【解决方案2】:

    我在 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 中唯一适合我的解决方案。
    • Nvm。它安装得很好,但是当我尝试运行任何实际测试时,我得到PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Framework.php on line 46
    • 对我来说,我这样做了,然后得到一个错误,我认为 stackoverflow.com/a/9186866/470749 Ubuntu 12.04 解决了这个错误
    • 对我不起作用 -- 我需要 channel-discover pear.phpunit.de 才能安装 phpunit/phpunit,然后我收到 require_once(PHPUnit/Util/Filter.php) 错误...该文件在我的文件系统上不存在.
    • 注意! 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. ...这将使这个答案无效。
    【解决方案3】:

    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 的回答对我有帮助 =) 但你指出也没关系 =)
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      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
      

      【讨论】:

        【解决方案6】:

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

        确定已将其添加到 include_path 中吗?

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

        【讨论】:

        • 是的,我已经尝试过这条路径和其他几个路径。这里的 cmets 限制为 600 个字符,所以我不确定如何向您展示我的 ini 文件。 include_path = " .:/usr/bin/php"
        • /usr/bin 是可执行文件所在的位置,而不是库。
        【解决方案7】:

        我找到了!

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

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

            我使用的是 Ubuntu 10.04.2。

            【讨论】:

              【解决方案10】:

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

              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
                

              【讨论】:

                【解决方案11】:

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

                我解决了它添加:

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

                /etc/php5/cli/php.ini

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

                【讨论】:

                  【解决方案12】:

                  我原来的问题是我无法让命令行版本的 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_path=".:/var/php5/lib/php/"

                  确保将其添加到不带 /PHP 的包含路径中,因为 phpunit 从 PHP/(注意大写)开始寻找代码覆盖率 打开失败需要'PHP/CodeCoverage/Filter.php'

                  【讨论】:

                    【解决方案13】:

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

                    【讨论】:

                      【解决方案14】:

                      对我来说,将测试分成多个批次很有帮助。

                      【讨论】:

                        【解决方案15】:

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

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

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

                        【讨论】:

                          【解决方案16】:

                          Ubuntu 12.04:

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

                          【讨论】:

                            【解决方案17】:

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

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

                            【讨论】:

                              猜你喜欢
                              • 2014-09-03
                              • 2012-04-30
                              • 2011-10-02
                              • 1970-01-01
                              • 2012-09-03
                              • 2016-08-15
                              • 2016-08-05
                              • 2012-02-18
                              • 2023-03-14
                              相关资源
                              最近更新 更多