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
运行
- 菲普尼特
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描述的错误。我可以通过以下简单步骤解决此问题:
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中
- 重新启动Apache,以便web服务器选择您的更改
- 重新启动终端/命令行会话,以便cli提示符选择更改
- 记住运行chwon来拥有php.ini文件,否则您甚至无法编辑它们
- 请记住运行chmod并更改值,以允许您保存更改,然后您可以将所有内容(文件上的访问控制,即chwon和chmod恢复到以前的状态)恢复到原来的状态,并且在重新启动终端和apache后应该是正常的
祝你好运与塞巴斯蒂安·佩雷斯(Sebastian Perez)的评论相比,霍华德·洛(Howard Lo)关于Mac OSX的评论非常有用。因为这句话的格式不太好,可能会被忽略。在我针对这个问题第二次运行OSX的Mavericks更新之后,U决定为这个问题创建这个完整的Apple OSX解决方案。我不得不说,我还安装了MAMP-PRO和几个不同版本的php,所以我需要非常准确
;***** Added by go-pear
include_path=".:/Users/admin/pear/share/pear:/php/includes:/usr/bin:/usr/lib/php/"