Ich habe ein Problem mit composer . Ich arbeite mit git in einer lokalen Umgebung. Ich bin der einzige Entwickler.
Wenn ich weitere Abhängigkeiten benötige (oder einige Versionen ändern muss), bearbeite ich die composer.json und führe composer install
lokal aus.
Alles in Ordnung.
Dann, wenn alles lokal funktioniert, übertrage ich meine Änderungen (einschließlich composer.json und composer.lock ) und drücke auf meinen Produktionsserver.
Ein Post-receive Skript aktualisiert die Quellen und führt composer install
auf dem Remote-Server aus.
Was wird erwartet:
Was passiert:
Warnung: Die Sperrdatei ist nicht auf dem neuesten Stand mit den letzten Änderungen in Komponist.json. Möglicherweise erhalten Sie veraltete Abhängigkeiten. Führen Sie das Update auf update sie.
composer update
ausführen, damit alles funktioniert, aber ich weiß, dass ein composer update
auf einem Produktionsserver nicht empfohlen wird. Hier sehen Sie die Ausgabe des Post-receive Komponistenabschnitts:
%Vor%Was mache ich falsch?
Danke, Ben
Diese Warnung
Warnung: Die Sperrdatei ist nicht auf dem neuesten Stand mit den letzten Änderungen in composer.json, Sie erhalten möglicherweise veraltete Abhängigkeiten, führen Sie ein Update aus, um sie zu aktualisieren.
tritt auf, wenn sich die md5sum von composer.json
von der in composer.lock
gespeicherten unterscheidet:
Stellen Sie sicher, dass Ihre composer.json
und composer.lock
identisch mit Ihren lokalen sind (vergleichen Sie ihre md5sums ). Ich vermute, dass etwas in Ihrer Bereitstellungskette sie nicht korrekt aktualisiert.
Stellen Sie sicher, dass Sie Ihre Abhängigkeiten lokal mit dem Befehl require
hinzugefügt haben:
oder wenn composer.json
mindestens manuell bearbeitet wurde
danach für jedes zusätzlich hinzugefügte Paket, um sicherzustellen, dass es korrekt zu Ihrem composer.lock
hinzugefügt wird.
Ein anderer Ansatz:
Führe composer update --lock
in der Produktion aus. Dadurch wird der Hash in Ihrer Sperrdatei aktualisiert, die Anbieter werden jedoch nicht aktualisiert.
Führen Sie dann composer install
aus, um die Anbieter von Ihrem comoser.lock
zu installieren.
Wenn ich weitere Abhängigkeiten benötige (oder einige Versionen ändern muss), bearbeite ich die Datei composer.json und führe die Composer-Installation lokal aus.
Das ist falsch. Sie können composer.json
bearbeiten und dann composer update
ausführen, oder Sie lassen Composer die interne Bearbeitung der JSON-Datei ausführen und einfach composer require new/package
ausführen (optional mit einer Version).
Wie auch immer, Sie sollten am Ende eine geänderte Datei composer.json
und composer.lock
haben, BOTH in Ihr Repository einbinden, und das erwartete Ergebnis ist, dass die Sperrdatei alle Pakete in den korrekten Versionen enthält, die installiert werden sollten in der Produktion mit einem normalen composer install
Lauf.
Beachten Sie, dass Ihr Workflow immer noch sehr gefährlich ist. Wenn Sie drücken, und Github ist unten - wie würden Sie die ZIPs installieren?
Tags und Links php git composer-php deployment