web-dev-qa-db-ja.com

PHPUnit:警告:require(PHPUnit / Autoload.php):ストリームを開けませんでした:/ usr / local / bin / phpunitの42行目にそのようなファイルまたはディレクトリはありません

走っているとき

  • phpunit

エラーが出る

Warning: require(PHPUnit/Autoload.php): failed to open stream: No such file or directory in /usr/local/bin/phpunit on line 42

Fatal error: require(): Failed opening required 'PHPUnit/Autoload.php' (include_path='.:') in /usr/local/bin/phpunit on line 42

/ usr/local/bin/phpunitは、42行目に次のように表示します。

require 'PHPUnit/Autoload.php';

これを修正する方法の提案はありますか?

更新(1):

/ etc /にphp.iniがないため、シンボリックリンクしてMAMP php.iniを読み取りました。今私は得る

php -r 'foreach (explode(":", get_include_path()) as $path) echo $path . PHP_EOL;'
.
/Applications/MAMP/bin/php/php5.3.6/lib/php
/usr/local/bin/pear
/usr/local/share/pear/PHPUnit

ランニング

  • phpunit

実行中ですが、出力はありません。

次に確認すべき提案はありますか?

更新(2):

この問題の根本的な原因はおそらく質問に関連しています

18
udo

MAC OSX Lionでも同様の問題が発生しました。 PEARパッケージマネージャーを使用してphpunitをインストールしました。それを実行しようとすると、udoで説明されているエラーが発生しました。次の簡単な手順で解決できました。

  1. ナシの最新のphpアーカイブを入手してくださいcurl http://pear.php.net/go-pear.phar > go-pear.php
  2. Sudo php -q go-pear.phpを使用してアーカイブをインストールします

インストール中に、php.iniのinclude_pathにPEAR PHPディレクトリ)が含まれていないかどうかを検出します。自動的に修正するように選択できます。オプションが与えられたとき。

12
warhod

ローカルディレクトリからphpunit.pharを実行しているときにこの問題に遭遇しましたが、PHPUnitもcomposer依存関係としてインストールされています。PHPUnitの削除composer =依存関係で問題が解決しました。

5
edan

PHPインクルードパス に、PHPUnitソースファイルを含むフォルダーが必要です。また、_PHPUnit/Autoload.php_は3.6で追加され、代わりに古い3.5.xソースフォルダーがある可能性があります。リストされたフォルダを使用して確認します

_php -r 'foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;'
_

(またはWindows)

_php -r"foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;"
_

そして、それらの1つに_Autoload.php_を含むPHPUnitフォルダーが含まれていることを確認します。

Update:更新に関しては、_/usr/local/share/pear/PHPUnit_をインクルードしているため、おそらく_PHPUnit/Autoload.php_をインクルードパスから削除する必要があります。インクルードパスに既にある_/usr/local/share/pear_に配置されます。

PHPUnitが動作していることを確認するには、まず_phpunit --version_を実行して、インストールされているバージョンを確認します。 PHPUnitは、何かを出力する前に、実行する予定のすべてのテストケースをインスタンス化します。ロード中にテストケースのいずれかで致命的なエラーが発生した場合、出力がまったく表示されないことがあります。これは非常にイライラします。まず、コードを使用しない、可能な限り単純なテストケースを作成します。

_class MyTest extends PHPUnit_Framework_TestCase {
    function testThatItWorks() {
        self::assertTrue(true);
    }
}
_

このテストを実行すると、単一の合格テストが生成されます。試してみて、質問に表示される内容を貼り付けてください。

5
David Harkness

以前の回答に追加するには:php.iniファイルが読み込まれていることを再確認し、追加のパスでそのファイルを編集していることを確認してください。ロードされたphp.iniを確認するために以下を使用しました

php -r 'phpinfo();'

ロードされたphp.iniファイルは/ private/etc/php.ini

次に、「which」を使用して、phpunitがインストールされている場所を通知します。

which phpunit

次に、php.iniファイルにそのパスを追加したので、最終的には次のようになります。

;***** Added by go-pear
include_path=".:/Users/admin/pear/share/pear:/php/includes:/usr/bin:/usr/lib/php/"

「phpunit --version」と他のコマンドがすべて期待どおりに機能するようにした後、.

3
Everett

Mac OSXでのHoward Loの発言は、セバスチャンペレスの発言と非常に役立ちます。備考はナイスフォーマットではないため、見落とされている可能性があります。私がこの問題に対して2回目に実行したOSXのMavericksアップデートの後、Uはこの完全なAppleこの問題のためのOSXソリューションを作成することに決めました。私はMAMP-PROをphpのいくつかの異なるバージョンなので、私は非常に正確である必要があります。

  1. Php.iniが/ private/etcにインストールされているかどうかを確認します。コマンドを発行しない場合:

    $ Sudo cp /private/etc/php.ini.default /private/etc/php.ini

  2. ナシの最新のphpアーカイブを入手する

    $ curl http://pear.php.net/go-pear.phar > go-pear.php

  3. アーカイブをインストールする

    $ Sudo php -q go-pear.php

  4. インストール中に、php.iniのinclude_pathにPEAR PHPディレクトリ)が含まれていないかどうかを検出します。自動的に修正するように選択できます。オプションが与えられたとき。

  5. これらの手順の後、次のコマンドを使用してphpunitを再度インストールする必要がありました。

    $ Sudo pear channel-discover pear.phpunit.de

    $ Sudo pear channel-discover components.ez.no

    $ Sudo pear channel-discover pear.symfony-project.com

    $ sudo pear install phpunit/PHPUnit

ハワード・ローとセバスチャン・ペレスに感謝します。

2
Harm

ここで直面する問題に直面するほとんどのユーザーはコマンドを実行しなければならないことに注意すべきです

$ phpunit

コマンドプロンプトから。上記のエラーが発生したとき。私たちのほとんどが実際の問題について理解していないのは、コマンドプロンプトで使用するPHPは、Webサーバーで実行しているものとは大きく異なります。個人的に私はlamppを使用し、ナシを使ってphpunitを正しくインストールしたにもかかわらず、この重要な部分を何時間も実現できませんでした。

対処法-include = pathにリソースを必要とするPHPスクリプトを実行する必要がある場合は常に、対応するPHP使用しているバイナリは適切に提供されています。xamppを使用したubuntu 12.04インストールの場合とポイントには、2つのphpバイナリが含まれます

  • コマンドライン1、つまり/ etc/php5/cli /ディレクトリにあるphp5-cli
  • /opt/lampp/etc/php.iniにある私のページを提供するためにApacheが使用するxampp one、つまりphp

両方のphp.iniファイルには、正しくbootstrapすべてのコマンドラインスクリプトとサーバーサイド(Apacheが提供するスクリプト))のために、望ましいかつ正しいinclude_path宣言が必要です。

php.iniを正しく構成した後の問題に戻ります

  • Apacheを再起動して、Webサーバーが変更を選択するようにします。
  • ターミナル/コマンドラインセッションを再起動して、CLIプロンプトが変更を選択するようにします

Linux/* nixシステムでファイルを変更するときに問題が発生する一般的な間違い

  • php.iniファイルを所有するためにchwonを実行することを忘れないでください。そうしないと、それらを編集することすらできません。

  • chmodを実行して値を変更し、変更を保存できるようにすることを忘れないでください。その後、すべて(ファイルのアクセス制御、つまりchwonとchmodを以前の状態に戻す)を元の状態に戻すことができます。ターミナルを再起動すると、問題ありません。 Apache。

幸運を

2
chitwarnold