2012-01-02 107 views
26

我试图在phpunit中运行testclass时出现此错误。运行phpunit时找不到“File/Iterator/Autoload.php”致命错误

C:\xampp\htdocs\unittest>phpunit UnitTest usertest.php 
PHP Warning: require_once(File/Iterator/Autoload.php): failed to open stream No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45 
PHP Stack trace: 
PHP 1. {main}() C:\xampp\php\phpunit:0 
PHP 2. require() C:\xampp\php\phpunit:41 

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45 

Call Stack: 
    0.0004  325352 1. {main}() C:\xampp\php\phpunit:0 
    0.0026  366520 2. require('C:\xampp\php\pear\PHPUnit\Autoload.php')xampp\php\phpunit:41 

PHP Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45 
PHP Stack trace: 
PHP 1. {main}() C:\xampp\php\phpunit:0' 

任何人都可以解决这个问题?

注:我使用Windows 7

感谢,

+0

*(相关)*(修复将工作):http://stackoverflow.com/questions/8078707/cannot-get-phpunit-working – edorian 2012-01-02 12:51:22

+0

*(note)*据我可以告诉这是不是重复因为这是一个安装问题,也许顺丰迁移,但这是一个真正的问题:) – edorian 2012-01-02 16:01:38

+0

也遇到类似的错误。如果您使用的是composer,请简单修复此问题,确保您拥有PHPUnit的最新稳定版本,例如5.5,并且全部都会工作。 – ProfNandaa 2016-09-18 14:35:47

回答

10

您的PHPUnit安装坏了。最简单的修复方法是

pear install --force --alldeps phpunit/phpunit 

并查看是否有效。

您将需要最新的梨版本1.9.4。如果您没有该版本,请使用go-pear.phar进行安装。如果您从xammp运行某些东西,请不要尝试修复它们发布的梨形安装。通常它很容易重新安装。

如果你愿意,你可以尝试只安装缺少的包太:

pear install phpunit/File_Iterator 

(添加--force如果梨告诉你,它已经被安装)

23

一个可能的原因,这可能发生的是你的php include_path设置不正确。请确保您有合适的PEAR可用路径。对于我的WAMP安装它将是:

include_path=".;C:\wamp\bin\php\php5.3.8\PEAR\PEAR" 

但是,它很可能会在您的系统上不同。

请注意,您需要更新您的apache php.ini以及位于您的PHP安装文件夹中的php.ini。 CLI默认的php.ini和web请求(通常是其他可能使用PEAR软件包的软件)将使用apache php.ini。

希望这会有所帮助。

+3

这正是我的想法,虽然直到我[RTFM](http://pear.php.net/manual/en/installation.checking.php)才知道。作为旁注,对于windows而言,';'和将osx/unix作为目录分隔符。 – George 2012-05-10 10:19:21

+0

也为我工作。在Ubuntu中,我的路径是“。:/ usr/share/pear”,以防万一。 – 2013-09-10 10:09:18

+0

“我也是”(对不起),在我的情况下,这是因为PHP通过Mac端口进行升级,Mac端口已经安装了新的php.ini配置,但没有复制到梨生成的包含路径。 – scipilot 2016-06-20 09:19:53

4

后阅读后2天,终于我已经解决了与指南:PHPUnit的LINK

通过保持电脑清洁/损坏的安装和重新安装本指南LINK

3

对我来说,修复很简单(Ubuntu 12.04)。首先,我做了搜索,以确保该文件存在,所在之处:

locate Autoload.php 

应返回类似这样的结果:

/usr/share/php/File/Iterator/Autoload.php 
/usr/share/php/PHP/CodeCoverage/Autoload.php 
/usr/share/php/PHP/Depend/Autoload.php 
/usr/share/php/PHP/Invoker/Autoload.php 
/usr/share/php/PHP/Timer/Autoload.php 
/usr/share/php/PHP/Token/Stream/Autoload.php 
/usr/share/php/PHPCPD/Autoload.php 
/usr/share/php/PHPUnit/Autoload.php 
/usr/share/php/PHPUnit/Framework/MockObject/Autoload.php 
/usr/share/php/PHP_CodeBrowser/Autoload.php 
/usr/share/php/Text/Template/Autoload.php 

然后我检查了我的include_path,这是在正确设置/etc/php5/apache2/php.ini,但仍在/etc/php5/cli/php.ini(命令行界面)中注释掉。

在取消这条线的工作对我来说:

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

非常基本的,我知道,但建立一个新的机器;-)

2

我必须使用PHP 5.3同样的问题时,它总是小事在OSX 10.6上使用内置的服务器配置。我注意到,虽然PHPUnit被成功安装到/ usr/lib/php,但Autoload.php正在尝试(第45行)从当前目录(/ usr/lib/php/PHPUnit)加载File Iterator,比目录梨安装它(/ usr/lib/php /文件)。这可能是Pear安装程序中的错误吗?

简单的ln -s/usr/lib/php/File/usr/lib/php/PHPUnit/File解决了这个问题。

+0

这是一个杂食。真正的原因是在php.ini中配置错误的include_path。这只是掩盖了真正的问题,并且如果事情发生轻微变化,可以轻松地再次打破。 – 2013-09-10 09:45:48

+1

@Tim,感谢您的解释,我首先想到了这个问题,几乎试图改变“require_once”路径。稍后通过修改php.ini来解决它。 – zhihong 2013-10-10 13:40:04

7

检查梨配置帮我quicky找到这个:

bash-3.2# pear config-show | grep php_dir 
PEAR directory     php_dir   /usr/local/pear/share/pear 

bash-3.2# vi /etc/php.ini 
include_path = ".:/php/includes:/usr/local/pear/share/pear" 
+0

此方法适用于我。在Ubuntu 12.04中,首先找到php_dir,它是“/ usr/share/php”,然后使用“locate php.ini”找到它的正确位置。我的情况是“/etc/php5/cli/php.ini”,然后添加/修改include_path =“。:/ usr/share/php” – zhihong 2013-10-10 13:36:34

3

所有样的好东西我已经在这一个阅读。 首先检查Autoload.php的位置。 用途:

$ find . -name 'Autoload.php' -type f 

我假设你的文件位于:

/usr/local/pear/share/pear 


我安装Apple OSX 10.8.4甲基苯丙胺和甲基苯丙胺-PRO,我有几个其他PHP安装。
对于最后一个我也做了以下内容: 首先检查是否有的php.ini目录: /private/etc
如果没有,这样做:

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

在添加以下行在 '的php.ini' 文件的底部:

; *** Added by <your-name> **** 
include_path=".:/usr/local/pear/share/pear" 
; *** Ended addition **** 

完成。

0

此外,使用开放式服务器套件可以注意到它报告的方式太短include_path。

要解决此问题在Windows 7,你可以做

cd c:\Windows 
mklink php.ini c:\OpenServer\userdata\temp\config\php.ini 
1

我使用Ubuntu的14.04,我通过安装Ubuntu软件中心PHPUnit的,没有工作。

最后我删除它,我也跟着从here

wget https://phar.phpunit.de/phpunit.phar 
chmod +x phpunit.phar 
sudo mv phpunit.phar /usr/local/bin/phpunit 
0

说明我与Windows 7和XAMPP(PHP 5.6.11)同样的问题,我试着重新安装所有梨和PHPUnit的,但它没有工作。当我检查了C:\ xammp \ php \ pear目录的权限时,它是只读的,在我更改了它开始工作的权限后。

0

查看错误:

(include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php 

的XAMPP试图找到在include_path中.;C:\php\pear该文件但是对于梨的路径是.;C:\xampp\php\pear

设置梨的正确路径,它将工作。我刚刚做到了。

相关问题