走っているとき
エラーが出る
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
ランニング
実行中ですが、出力はありません。
次に確認すべき提案はありますか?
更新(2):
この問題の根本的な原因はおそらく質問に関連しています
MAC OSX Lionでも同様の問題が発生しました。 PEARパッケージマネージャーを使用してphpunitをインストールしました。それを実行しようとすると、udoで説明されているエラーが発生しました。次の簡単な手順で解決できました。
curl http://pear.php.net/go-pear.phar > go-pear.php
Sudo php -q go-pear.php
を使用してアーカイブをインストールしますインストール中に、php.iniのinclude_pathにPEAR PHPディレクトリ)が含まれていないかどうかを検出します。自動的に修正するように選択できます。オプションが与えられたとき。
ローカルディレクトリからphpunit.phar
を実行しているときにこの問題に遭遇しましたが、PHPUnitもcomposer依存関係としてインストールされています。PHPUnitの削除composer =依存関係で問題が解決しました。
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);
}
}
_
このテストを実行すると、単一の合格テストが生成されます。試してみて、質問に表示される内容を貼り付けてください。
以前の回答に追加するには: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」と他のコマンドがすべて期待どおりに機能するようにした後、.
Mac OSXでのHoward Loの発言は、セバスチャンペレスの発言と非常に役立ちます。備考はナイスフォーマットではないため、見落とされている可能性があります。私がこの問題に対して2回目に実行したOSXのMavericksアップデートの後、Uはこの完全なAppleこの問題のためのOSXソリューションを作成することに決めました。私はMAMP-PROをphpのいくつかの異なるバージョンなので、私は非常に正確である必要があります。
Php.iniが/ private/etcにインストールされているかどうかを確認します。コマンドを発行しない場合:
$ Sudo cp /private/etc/php.ini.default /private/etc/php.ini
ナシの最新のphpアーカイブを入手する
$ curl http://pear.php.net/go-pear.phar > go-pear.php
アーカイブをインストールする
$ Sudo php -q go-pear.php
インストール中に、php.iniのinclude_pathにPEAR PHPディレクトリ)が含まれていないかどうかを検出します。自動的に修正するように選択できます。オプションが与えられたとき。
これらの手順の後、次のコマンドを使用して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
ハワード・ローとセバスチャン・ペレスに感謝します。
ここで直面する問題に直面するほとんどのユーザーはコマンドを実行しなければならないことに注意すべきです
$ phpunit
コマンドプロンプトから。上記のエラーが発生したとき。私たちのほとんどが実際の問題について理解していないのは、コマンドプロンプトで使用するPHPは、Webサーバーで実行しているものとは大きく異なります。個人的に私はlamppを使用し、ナシを使ってphpunitを正しくインストールしたにもかかわらず、この重要な部分を何時間も実現できませんでした。
対処法-include = pathにリソースを必要とするPHPスクリプトを実行する必要がある場合は常に、対応するPHP使用しているバイナリは適切に提供されています。xamppを使用したubuntu 12.04インストールの場合とポイントには、2つのphpバイナリが含まれます
両方のphp.iniファイルには、正しくbootstrapすべてのコマンドラインスクリプトとサーバーサイド(Apacheが提供するスクリプト))のために、望ましいかつ正しいinclude_path宣言が必要です。
php.iniを正しく構成した後の問題に戻ります
Linux/* nixシステムでファイルを変更するときに問題が発生する一般的な間違い
php.iniファイルを所有するためにchwonを実行することを忘れないでください。そうしないと、それらを編集することすらできません。
chmodを実行して値を変更し、変更を保存できるようにすることを忘れないでください。その後、すべて(ファイルのアクセス制御、つまりchwonとchmodを以前の状態に戻す)を元の状態に戻すことができます。ターミナルを再起動すると、問題ありません。 Apache。
幸運を