我试图在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。
谢谢,
答案 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)
答案 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
。
设置梨的正确路径,它将起作用。我刚刚做到了。