运行phpunit时找不到致命错误'File / Iterator / Autoload.php'

时间:2012-01-02 12:10:35

标签: php unit-testing phpunit

我试图在phpunit中运行testclass时收到此错误。

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。

谢谢,

11 个答案:

答案 0 :(得分: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。

希望这有帮助。

答案 1 :(得分:10)

您的phpunit安装已损坏。最简单的解决方法是

pear install --force --alldeps phpunit/phpunit

看看是否有效。

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

如果您愿意,也可以尝试安装缺少的包:

pear install phpunit/File_Iterator

(如果pear告诉您已经安装了<{1>},请添加--force

答案 2 :(得分:7)

检查pear配置帮助我找到了这个快速:

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"

答案 3 :(得分:4)

经过2天的阅读后,终于我用导游解决了:

通过保留/损坏安装Phpunit LINK

来清理电脑

并重新使用本指南LINK

答案 4 :(得分: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"

我知道非常基础,但在设置新机器时总是很小的事情; - )

答案 5 :(得分:3)

我在这个上读过的所有好事。 首先检查Autoload.php所在的位置。 使用:

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

我假设您的文件位于:

/usr/local/pear/share/pear


我安装了Apple OSX 10.8.4 MAMP和MAMP-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 ****

完成。

答案 6 :(得分:2)

使用内置服务器配置在OSX 10.6上使用PhP 5.3时遇到了同样的问题。

我注意到当PHPUnit成功安装到/ usr / lib / php时,Autoload.php正在尝试(第45行)从当前目录(/ usr / lib / php / PHPUnit)加载File Iterator而不是梨目录正在安装到(/ usr / lib / php / File)。这可能是Pear安装程序中的错误吗?

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

答案 7 :(得分: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

答案 8 :(得分:0)

此外,使用开放式服务器捆绑包可以发现它报告的方式太短了include_path。

要在Windows 7上修复此问题,您可以执行

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

答案 9 :(得分:0)

我遇到了与Windows 7和xampp(php 5.6.11)相同的问题,我尝试了所有重新安装pear和phpunit,但它没有用。当我检查 C:\ xammp \ php \ pear 目录的权限时,它是只读的,在我更改权限后它开始工作。

答案 10 :(得分:0)

查看错误:

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

Xampp正在尝试在include_path .;C:\php\pear中找到该文件但梨的路径为.;C:\xampp\php\pear

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