Ich habe eine Laravel-App, die Passport verwendet, um eine API-Authentifizierung bereitzustellen. Die App wird mithilfe von Git mit einem Post-Receive-Hook bereitgestellt. Ein Teil des Post-Receive-Skripts ist eine Composer-Installation. Seit ich Passport eingebunden habe, bricht die API bei der Bereitstellung meiner App Routen ab, die sich hinter einem Authentifizierungsgate befinden, wobei die Stack-Ablaufverfolgung unten eingefügt wird.
Wenn ich auf den Server der App gehe und genau den gleichen composer install
-Befehl wie in meinem Post-Receive-Hook ausführe, dann funktioniert es wieder gut.
Ich sehe keine Fehlermeldungen von git, wenn die Bereitstellung stattfindet, und es scheint, dass ich dieselbe Ausgabe von composer install
erhalte, wenn die Bereitstellung stattfindet und wenn ich den Befehl manuell ausführe.
Hier ist die Deploy-Ausgabe des Befehls composer install
:
Und hier ist, was ich sehe, wenn ich den Befehl manuell ausführe:
%Vor% Was ist hier los? Es scheint, dass die Bereitstellung eine ältere Version einer Komponente von Passport installiert, die dann nach dem manuellen Ausführen von composer install
korrigiert wird, aber ich weiß nicht, warum dies passieren würde und warum sie bei jeder Bereitstellung auftritt ein neues Update, auch wenn keine Änderungen an composer.json oder composer.lock vorgenommen wurden.
Hier ist der Stack-Trace, auf den oben Bezug genommen wurde:
%Vor%Ok, das Problem lag also im Befehl "Optimieren für Handwerker". Wie ich im Kommentar zu meiner Frage angemerkt habe, ist mir aufgefallen, dass der Befehl optimize über den Post-Receive-Haken viel schneller lief als bei der manuellen Ausführung des Befehls.
In meiner implementierten Umgebung habe ich eine composer.phar-Datei in einem Verzeichnis, das vom Verzeichnis laravel getrennt ist. Als ich einen Softlink zu composer.phar im Basisverzeichnis gemacht habe, hat alles wieder gut funktioniert.
Ich bin immer noch nicht sicher, warum das Problem passiert ist, aber es scheint, als wäre Laravel vielleicht nicht in der Lage, meine Composer-Instanz zu finden, wenn ich vom Post-Receive-Hook aus starte, obwohl meine Umgebung so eingerichtet wurde Die Kommandozeile hat funktioniert.
Tags und Links laravel composer-php githooks