当我试图在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
。
为梨设置正确的路径,它将工作。