运行时
我收到错误
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):
可能这个问题的根本原因与问题
有关答案 0 :(得分:12)
我在MAC OSX Lion上遇到了类似的问题。我用PEAR包管理器安装了phpunit,当我尝试运行它时,我得到了udo所描述的错误。我能够通过以下简单步骤解决它:
curl http://pear.php.net/go-pear.phar > go-pear.php
sudo php -q go-pear.php
在安装过程中,它会检测php.ini中的include_path是否不包含PEAR PHP目录。在给定选项时,您可以选择让它自动为您修复。
答案 1 :(得分:5)
您必须拥有PHP include path上包含PHPUnit源文件的文件夹。此外,在3.6中添加了PHPUnit/Autoload.php
,您可能会使用较旧的3.5.x源文件夹。检查使用
php -r 'foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;'
(或在Windows上)
php -r"foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;"
并确保其中一个文件夹包含PHPUnit
个Autoload.php
文件夹。
更新:关于您的更新,您可能希望从包含路径中删除/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);
}
}
运行此测试应该产生一次通过测试。试一试并粘贴您在问题中看到的内容。
答案 2 :(得分:5)
当我从本地目录运行phpunit.phar
时遇到了这个问题,但是还安装了PHPUnit作为作曲家依赖项。删除PHPUnit编写器依赖项解决了我的问题。
答案 3 :(得分:3)
要添加到之前的答案:正在加载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”和其他命令才能按预期工作。
答案 4 :(得分:2)
应该注意的是,面临此问题的大多数用户必须运行命令
$ phpunit
从命令提示符。当他们得到上述错误。我们大多数人都无法理解真正的问题是,在命令提示符下使用的PHP与您在Web服务器中为您运行的PHP大多不同。我个人使用lampp,即使我已经成功地使用pear正确安装了phpunit,但我几个小时都未能意识到这一重要部分。
<强>解决方法强> - 任何时候你需要运行需要include_path中的资源的PHP脚本,请确保你使用的相应PHP二进制文件的php.ini配备齐全。在我的ubuntu 12.04安装的情况和点与xampp我的两个php二进制文件包括
php.ini文件必须具有您理想的正确include_path声明,才能正确引导任何命令行脚本和服务器端(apache服务脚本)。
在正确配置php.ini之后回到我们的问题,记得
在Linux / * nix系统中更改文件时遇到问题的常见错误
记得运行chwon拥有php.ini文件,否则你甚至无法编辑它们
记得运行chmod并更改值以允许您保存更改,之后您可以将所有内容(文件上的访问控制,即chwon和chmod恢复到之前的状态)返回到它们的方式,它应该是重新启动终端和apache后确定。
祝你好运
答案 5 :(得分:2)
霍华德罗在Mac OSX上的评论非常有用 塞巴斯蒂安佩雷斯的评论。因为这句话格式不是很好,所以可能会被忽略。在小牛队更新OSX之后,我第二次跑到这个问题,U决定为这个问题创建这个完整的Apple OSX解决方案。我不得不说我已经安装了几个不同版本的php的MAMP-PRO,所以我需要非常准确。
检查您是否在/ private / etc中安装了php.ini。如果没有发出命令:
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
获取梨的最新php档案
$ curl http://pear.php.net/go-pear.phar&gt;去-对PEAR.php
使用
安装存档$ sudo php -q go-pear.php
在安装过程中,它会检测php.ini中的include_path是否不包含PEAR PHP目录。在给定选项时,您可以选择让它自动为您修复。
完成这些步骤后,我必须使用以下命令再次安装phpunit:
$ sudo pear channel-discover pear.phpunit.de
$ sudo pear channel-discover components.ez.no
$ sudo pear channel-discover pear.symfony-project.com
$ sudo pear install phpunit / PHPUnit
非常感谢Howard Lo和Sebastian Perez。