web-dev-qa-db-ja.com

phpunitの実行中に致命的なエラー 'File / Iterator / Autoload.php'が見つかりません

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を使用しています。

おかげで、

27
pearlsoft

これが発生する理由として考えられるのは、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を使用することがよくあります。

お役に立てれば。

23
Syntaqx

Phpunitのインストールが壊れています。これに対する最も簡単な修正は

pear install --force --alldeps phpunit/phpunit

うまくいったかどうかを確認します。

最新の梨バージョンが必要です1.9.4。そのバージョンがない場合は go-pear.phar 。何かのためにxammpから実行している場合は、出荷されているpearのインストールを修正しないでください。通常は、再インストールする方が簡単です。

必要な場合は、不足しているパッケージをインストールすることもできます。

pear install phpunit/File_Iterator

--force pearがすでにインストールされていることを通知した場合)

10
edorian

Pear configをチェックすると、この迅速な検索に役立ちました。

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"
7
d g

2日間の投稿を読んだ後、最後にガイドで解決しました:

Phpunitの保持/破損したインストールによってPCをクリーンアップ [〜#〜] link [〜#〜]

このガイドで再インストール [〜#〜] link [〜#〜]

4
Teo

私がこれで読んだあらゆる種類の素晴らしいもの。最初に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 ****

できました。

3
Harm

私にとっての修正は簡単でした(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

次に、/ etc/php5/Apache2/php.iniに正しく設定されているinclude_pathを確認しましたが、/ etc/php5/cli/php.ini(コマンドラインインターフェース)ではまだコメント化されていました。

この行のコメントを外すとうまくいきました:

include_path = ".:/usr/share/php:/usr/include/php5"

かなり基本的なことは知っていますが、新しいマシンをセットアップするときは常にささいなことです;-)

3
jreuter

組み込みのサーバー構成を使用して、OSX 10.6でPhP 5.3を使用すると、同じ問題が発生しました。

PHPUnitが/ usr/lib/phpに正常にインストールされている間に、Autoload.phpがPearディレクトリではなく現在のディレクトリ(/ usr/lib/php/PHPUnit)からFile Iteratorをロードしようとしている(45行目)ことに気づきました(/ usr/lib/php/File)にインストールしていました。これはPearインストーラーのバグですか?

単純なln -s/usr/lib/php/File/usr/lib/php/PHPUnit/Fileは問題を解決しました。

2
DMCoding

Ubuntu 14.04を使用していますが、Ubuntu Software Center経由でphpunitをインストールしましたが、機能しませんでした。

最後にそれを削除し、 here の指示に従いました

wget https://phar.phpunit.de/phpunit.phar  
chmod +x phpunit.phar  
Sudo mv phpunit.phar /usr/local/bin/phpunit
1
Stilgar

エラーを見てください:

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

Xamppはinclude_path .;C:\php\pearでそのファイルを見つけようとしていますが、梨のパスは.;C:\xampp\php\pearです。

ナシの正しいパスを設定し、それが動作します。作りました.

0
Leap Hawk

Windows 7とxampp(php 5.6.11)で同じ問題が発生しました。pearとphpunitをすべて再インストールしようとしましたが、機能しませんでした。 C:\ xammp\php\pearディレクトリの権限を確認したところ、読み取り専用でした。権限を変更した後、機能し始めました。

また、open-serverバンドルを使用すると、include_pathが短すぎると報告されることがわかります。

これをWindows 7で修正するには、次のようにします

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