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



当我试图在phpunit中运行testclass时,我得到了这个错误。

C:xampphtdocsunittest>phpunit UnitTest usertest.php
PHP Warning:  require_once(File/Iterator/Autoload.php): failed to open stream No such file or directory in C:xamppphppearPHPUnitAutoload.php on line 45
PHP Stack trace:
PHP   1. {main}() C:xamppphpphpunit:0
PHP   2. require() C:xamppphpphpunit:41
Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in C:xamppphppearPHPUnitAutoload.php on line 45
Call Stack:
    0.0004     325352   1. {main}() C:xamppphpphpunit:0
    0.0026     366520   2. require('C:xamppphppearPHPUnitAutoload.php')xamppphpphpunit:41
PHP Fatal error:  require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;C:phppear') in C:xamppphppearPHPUnitAutoload.php on line 45
PHP Stack trace:
PHP   1. {main}() C:xamppphpphpunit:0'
谁能给解决这个问题?

注意:我使用的是windows 7。

谢谢,

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

include_path=".;C:wampbinphpphp5.3.8PEARPEAR"

但是,在您的系统中很可能会有所不同。

附带说明,您将需要更新apache PHP .ini以及位于PHP安装文件夹中的PHP .ini。命令行默认的php.ini,而web请求(以及通常使用PEAR包的其他软件)将使用apache php.ini。

您的phpunit安装失败。最简单的修复方法是

pear install --force --alldeps phpunit/phpunit

,看看是否成功。

您将需要最新的pear版本1.9.4。如果您没有该版本,请使用go-pear.phar安装它。如果您正在从xammp运行某些东西,不要试图修复它们附带的pear安装。通常重新安装要容易得多。

如果你想,你也可以尝试安装丢失的包:

pear install phpunit/File_Iterator

(如果pear告诉你它已经安装了,添加一个--force)

检查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"

经过2天的帖子阅读,我终于解决了指南:

清除Phpunit安装错误的程序LINK

并重新安装此指南LINK

对我来说修复很简单(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"

我知道这很基本,但在设置新机器时总是有一些小事情;-)

所有我在这上面读到的好东西。首先检查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 ****

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

我注意到,当PHPUnit被成功安装到/usr/lib/php时,autolload .php试图(第45行)从当前目录(/usr/lib/php/PHPUnit)加载文件迭代器,而不是Pear安装到的目录(/usr/lib/php/File)。这可能是Pear安装程序中的错误吗?

一个简单的ln -s/usr/lib/php/file/usr/lib/php/phunit/file解决了这个问题

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

最后我删除了它,并按照这里的说明

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

另外,使用open-server bundle可以注意到它报告的include_path太短了。

要在Windows 7上解决这个问题,可以执行

cd c:Windows
mklink php.ini c:OpenServeruserdatatempconfigphp.ini

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

查看错误:

 (include_path='.;C:phppear') in C:xamppphppearPHPUnitAutoload.php

Xampp试图在include_path .;C:phppear中找到该文件,但是梨的路径是.;C:xamppphppear

为梨设置正确的路径,它将工作。

最新更新