PHPUnit:Warning:require(PHPUnit/Autoload.php):无法打开流:第42行的/usr/local/bin/PHPUnit中没有这样的文件或目录

PHPUnit:Warning:require(PHPUnit/Autoload.php):无法打开流:第42行的/usr/local/bin/PHPUnit中没有这样的文件或目录,phpunit,osx-lion,mamp,Phpunit,Osx Lion,Mamp,跑步时 菲普尼特 我犯了一个错误 Warning: require(PHPUnit/Autoload.php): failed to open stream: No such file or directory in /usr/local/bin/phpunit on line 42 Fatal error: require(): Failed opening required 'PHPUnit/Autoload.php' (include_path='.:') in /usr/local

跑步时

  • 菲普尼特
我犯了一个错误

Warning: require(PHPUnit/Autoload.php): failed to open stream: No such file or directory in /usr/local/bin/phpunit on line 42

Fatal error: require(): Failed opening required 'PHPUnit/Autoload.php' (include_path='.:') in /usr/local/bin/phpunit on line 42
/usr/local/bin/phpunit在第42行显示以下内容:

require 'PHPUnit/Autoload.php';
有什么建议可以解决这个问题吗

更新(1):

我在/etc/中缺少php.ini,因此我将其符号链接以读取MAMP php.ini。现在我明白了

php -r 'foreach (explode(":", get_include_path()) as $path) echo $path . PHP_EOL;'
.
/Applications/MAMP/bin/php/php5.3.6/lib/php
/usr/local/bin/pear
/usr/local/share/pear/PHPUnit
运行

  • 菲普尼特
正在运行,但不提供输出

有什么建议下一步要检查什么吗

更新(2):

这个问题的根本原因可能与这个问题有关


您的计算机上必须有包含PHPUnit源文件的文件夹。另外,在3.6中添加了
PHPUnit/Autoload.php
,您可能有一个旧的3.5.x源文件夹。使用检查列出的文件夹

php -r 'foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;'
(或在Windows上)

并确保其中一个包含一个带有
Autoload.php
PHPUnit
文件夹

更新:关于您的更新,您可能希望从包含路径中删除
/usr/local/share/pear/PHPUnit
,因为您包含了
PHPUnit/Autoload.php
,它应该位于包含路径中的
/usr/local/share/pear

要确保PHPUnit正常工作,请首先运行
PHPUnit--version
,以便查看已安装的版本。PHPUnit在输出任何东西之前实例化它计划运行的所有测试用例。如果您的任何测试用例在加载时导致致命错误,有时根本不会显示任何输出。这是非常令人沮丧的。从创建不使用任何代码的最简单测试用例开始

class MyTest extends PHPUnit_Framework_TestCase {
    function testThatItWorks() {
        self::assertTrue(true);
    }
}

运行此测试应产生一次通过测试。尝试并粘贴您在问题中看到的内容。

我在MAC OSX Lion上遇到了类似的问题。我用PEAR包管理器安装了phpunit,当我尝试运行它时,我得到了udo描述的错误。我可以通过以下简单步骤解决此问题:

  • 获取pear
    curl的最新php存档http://pear.php.net/go-pear.phar >go pear.php
  • 使用
    sudophp-qgo pear.php安装归档文件

  • 在安装过程中,它会检测php.ini中的include_路径是否不包含PEAR php目录。您可以选择让它在指定选项时自动为您修复它。

    要添加到前面的答案中:请仔细检查正在加载的php.ini文件,并确保您使用其他路径编辑该文件。我使用以下命令检查加载的php.ini

    php -r 'phpinfo();'
    
    这告诉我加载的php.ini文件是/private/etc/php.ini

    然后我用“which”告诉我phpunit安装在哪里:

    which phpunit
    
    然后我将该路径添加到php.ini文件中,结果如下所示:

    ;***** Added by go-pear
    include_path=".:/Users/admin/pear/share/pear:/php/includes:/usr/bin:/usr/lib/php/"
    

    只有在我完成了所有这些之后,“phpunit--version”和其他命令才能像预期的那样工作。

    应该注意的是,大多数面临此问题的用户必须运行该命令

    $phpunit

    从命令提示中。当他们得到上述错误时。对于真正的问题,我们大多数人无法理解的是,在命令提示符下使用的PHP与在Web服务器上为您运行的PHP有很大的不同。就我个人而言,我使用lampp,尽管我成功地使用pear正确安装了phpunit,但我几个小时都没有意识到这一重要部分

    补救措施 -对于任何需要在include_路径中运行需要资源的PHP脚本的时候,请确保为您使用的各个PHP二进制文件提供了足够的PHP.ini。在我使用xampp安装的Ubuntu12.04中,我的两个php二进制文件包括

    • 在/etc/php5/cli/目录中可以找到命令行一,即php5 cli
    • xampp one即php,apache使用它为我的页面提供服务,这些页面位于/opt/lampp/etc/php.ini中
    这两个php.ini文件都必须具有理想且正确的include_路径声明,以便正确引导任何命令行脚本和服务器端(apache服务的脚本)

    正确配置php.ini后,回到我们手头的事情上,记住

    • 重新启动Apache,以便web服务器选择您的更改
    • 重新启动终端/命令行会话,以便cli提示符选择更改
    在Linux/*nix系统中更改文件时出现问题的常见错误

    • 记住运行chwon来拥有php.ini文件,否则您甚至无法编辑它们

    • 请记住运行chmod并更改值,以允许您保存更改,然后您可以将所有内容(文件上的访问控制,即chwon和chmod恢复到以前的状态)恢复到原来的状态,并且在重新启动终端和apache后应该是正常的


    祝你好运

    与塞巴斯蒂安·佩雷斯(Sebastian Perez)的评论相比,霍华德·洛(Howard Lo)关于Mac OSX的评论非常有用。因为这句话的格式不太好,可能会被忽略。在我针对这个问题第二次运行OSX的Mavericks更新之后,U决定为这个问题创建这个完整的Apple OSX解决方案。我不得不说,我还安装了MAMP-PRO和几个不同版本的php,所以我需要非常准确

  • 检查是否在/private/etc中安装了php.ini。如果没有,请发出命令:

    $sudo cp/private/etc/php.ini.default/private/etc/php.ini

  • 获取pear的最新php存档

    $curl>go-pear.php

  • 使用安装存档

    $sudo php-q go-pear.php

  • 在安装过程中,它会检测php.ini中的include_路径是否不包含PEAR php目录。您可以选择让它在提供选项时自动为您修复它

  • 在这些步骤之后
    ;***** Added by go-pear
    include_path=".:/Users/admin/pear/share/pear:/php/includes:/usr/bin:/usr/lib/php/"