Phpunit: Composerのインストールが機能しない

作成日 2014年11月12日  ·  4コメント  ·  ソース: sebastianbergmann/phpunit

composer.jsonのrequire-devセクションにphpunitを追加してインストールしても、機能しないようです。

"require-dev": {
    "phpunit/phpunit": "4.3.*"
}

これは現在、phpunit4.3.5を引き込もうとしています。 composer.jsonファイルは、bin-dir(bin / phpunit)にphpunitのバイナリがあることを指定していますが、GitHubのphpunitのコードにはそのようなディレクトリは含まれていません。ましてや、そのディレクトリにphpunitファイルがあります。 したがって、プロジェクトレベルでbin / phpunitにシンボリックリンクしようとすると、そもそもシンボリックリンクするファイルがないため失敗します。

スローされたErrorExceptionがsrc / Composer / Installer / LibraryInstaller.phpの246行目にあり、エラーメッセージが「file_put_contents(/ xxxxxx / bin / phpunit):failed」であるため、これは最新のコンポーザーPHARを使用するUbuntuLinuxシステム上にあります。ストリームを開くには:そのようなファイルまたはディレクトリはありません」(プロジェクトディレクトリのパスはxxxxxxではなく、編集されています)。

ありがとう。

最も参考になるコメント

今日はまったく同じ問題が発生し、binディレクトリを削除することで解決できたので、バグレポートをありがとうございました…

全てのコメント4件

あなたの問題が何であるかわからない:

$ cat composer.json 
{
    "require-dev": {
        "phpunit/phpunit": "4.3.*"
    }
}

$ php composer.phar install
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing sebastian/version (1.0.3)
    Loading from cache

  - Installing sebastian/exporter (1.0.2)
    Loading from cache

  - Installing sebastian/environment (1.2.0)
    Loading from cache

  - Installing sebastian/diff (1.2.0)
    Loading from cache

  - Installing sebastian/comparator (1.0.1)
    Loading from cache

  - Installing symfony/yaml (v2.5.6)
    Loading from cache

  - Installing doctrine/instantiator (1.0.4)
    Loading from cache

  - Installing phpunit/php-text-template (1.2.0)
    Loading from cache

  - Installing phpunit/phpunit-mock-objects (2.3.0)
    Loading from cache

  - Installing phpunit/php-timer (1.0.5)
    Loading from cache

  - Installing phpunit/php-file-iterator (1.3.4)
    Loading from cache

  - Installing phpunit/php-token-stream (1.3.0)
    Loading from cache

  - Installing phpunit/php-code-coverage (2.0.11)
    Loading from cache

  - Installing phpunit/phpunit (4.3.5)
    Downloading: 100%         

phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Writing lock file
Generating autoload files

$ ./vendor/bin/phpunit --version
PHPUnit 4.3.5 by Sebastian Bergmann.

プロジェクトにbinディレクトリが必要であるとの想定でお詫び申し上げます。 私は今朝、phpunitリポジトリのルートにあるphpunitファイルに気づいたので、そこにある私の仮定は正しくありません。 多くの謝罪。 しかし、私はまだ同じ問題に直面しています。 ただし、composer installを使用して正しくインストールできるため、このチケットの根拠は誤った仮定であるため、このチケットを閉じます。 問題を解決してその原因を見つけた場合、問題が実際にphpunitに関連している場合は、必要に応じて開くか、再度開きます。 ありがとう。

私は自分の問題の原因を発見したと思います。 composer.jsonには次のようなエントリがありました。

"require-dev": {
    "phpunit/phpunit": "~3.7"
}

そして、bin / phpunitは../vendor/phpunit/phpunit/composer/bin/phpunitを指すシンボリックリンクでした。

composer installはそのシンボリックリンクを更新していませんでした。壊れたシンボリックリンクであるbin / phpunitの内容を更新しようとすると失敗し、createUnixyProxyメソッドを使用して更新しようとしましたが、これもシンボリックリンクが壊れているために失敗しました。 phpunitバイナリが3.7から4.0に変更されたため、コンポーザーが混乱する可能性がありますが、コンポーザーは、binフォルダー内の壊れたシンボリックリンクを現在よりも適切に更新する必要性を適切に処理できるはずです。

ありがとう、そして私は虚偽の報告をお詫び申し上げます。

今日はまったく同じ問題が発生し、binディレクトリを削除することで解決できたので、バグレポートをありがとうございました…

このページは役に立ちましたか?
0 / 5 - 0 評価