2012-01-02 105 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

設置梨的正確路徑,它將工作。我剛剛做到了。

相關問題