Phpunit: Composer-Installation funktioniert nicht

Erstellt am 12. Nov. 2014  ·  4Kommentare  ·  Quelle: sebastianbergmann/phpunit

Die Installation durch Hinzufügen von phpunit zum require-dev-Abschnitt von composer.json scheint nicht zu funktionieren.

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

Dieser versucht derzeit, phpunit 4.3.5 einzuspielen. Die Datei composer.json gibt an, dass es eine Binärdatei für phpunit im Verzeichnis bin (bin/phpunit) gibt, aber der Code für phpunit in GitHub enthält kein solches Verzeichnis, geschweige denn eine phpunit-Datei in diesem Verzeichnis. Wenn es also versucht, es auf Projektebene mit bin/phpunit zu verknüpfen, schlägt dies fehl, da es überhaupt keine Datei zum Symlinken gibt.

Dies ist auf einem Ubuntu-Linux-System, das den neuesten Composer PHAR verwendet, da sich die ausgelöste ErrorException in Zeile 246 von src/Composer/Installer/LibraryInstaller.php befindet und die Fehlermeldung „file_put_contents(/xxxxxx/bin/phpunit): failed“ lautet to open stream: No such file or directory" (der Pfad des Projektverzeichnisses ist nicht xxxxxx, er wurde redigiert).

Danke.

Hilfreichster Kommentar

Vielen Dank für den Fehlerbericht, da ich heute auf genau das gleiche Problem gestoßen bin und es lösen konnte, indem ich das bin-Verzeichnis entfernte…

Alle 4 Kommentare

Ich bin mir nicht sicher, was dein Problem ist:

$ 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.

Ich entschuldige mich für die Annahme, dass das bin-Verzeichnis in Ihrem Projekt benötigt wird. Ich habe heute Morgen die phpunit-Datei im Stammverzeichnis des phpunit-Repositorys bemerkt, daher ist meine Annahme dort nicht korrekt; Viele Entschuldigungen. Allerdings stehe ich immer noch vor dem gleichen Problem. Da Sie es jedoch mit der Composer-Installation ordnungsgemäß installieren können, werde ich dieses Ticket schließen, da die Grundlage dafür eine falsche Annahme ist. Wenn ich mein Problem löse und die Quelle dafür entdecke, werde ich es entsprechend öffnen oder erneut öffnen, wenn das Problem tatsächlich mit phpunit zusammenhängt. Danke.

Ich glaube, ich habe die Ursache meines Problems entdeckt. composer.json hatte einen Eintrag wie folgt:

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

Und bin/phpunit war ein Symlink, der auf ../vendor/phpunit/phpunit/composer/bin/phpunit zeigte.

composer install hat diesen Symlink nicht aktualisiert, und als es versuchte, den Inhalt von bin/phpunit zu aktualisieren, was ein defekter Symlink war, schlug es fehl und versuchte dann, es über die createUnixyProxy-Methode zu aktualisieren, was ebenfalls aufgrund des defekten Symlinks fehlschlug. Es scheint, dass die Änderung der phpunit-Binärdatei von 3.7 auf 4.0 Composer möglicherweise verwirrt, obwohl ich denke, dass Composer in der Lage sein sollte, die Notwendigkeit, einen defekten Symlink im Bin-Ordner zu aktualisieren, besser zu handhaben als derzeit.

Danke, und es tut mir leid für den falschen Bericht.

Vielen Dank für den Fehlerbericht, da ich heute auf genau das gleiche Problem gestoßen bin und es lösen konnte, indem ich das bin-Verzeichnis entfernte…

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen