Mir ist aufgefallen, dass beim Ausführen php artisan config:cache
der resultierende Cache absolute Pfade hat, da standardmäßig einige storage_path()
-Aufrufe in Laravel-Konfigurationsdateien vorhanden sind.
Ich habe die Dokumentation gelesen:
Normalerweise sollten Sie den Befehl php artisan config:cache als Teil Ihrer Produktionsbereitstellungsroutine ausführen.
Die Dokumentation sagt nicht, dass ich den Befehl auf dem Server und nicht auf meinem automatisierten CI-Build-Agent ausführen soll. Aber nicht jeder hat Zugriff auf den php artisan config:cache
-Befehl auf seinen Servern, um ihn remote vom CI-Build-Agent auszuführen.
Ich denke, die Dokumentation sollte aktualisiert werden, um die Anforderung zum Ausführen des Befehls auf dem Server widerzuspiegeln.
Es wäre jedoch noch besser, einen Weg zu implementieren, um einen Konfigurationscache mit relativen Pfaden zu generieren.
Derzeit könnte ich eine Problemumgehung für das Problem hinzufügen und einen PHP-Controller erstellen, der handwerkliche Befehle ausführt, und ihn während der Bereitstellung aufrufen. Das Problem ist jedoch, dass die Bereitstellung auf unserem Server so eingerichtet ist, dass sie über Git-Push funktioniert, und erst nach wenigen Minuten wird die Website mit der aktuellen Version im Repository synchronisiert. Ich denke nicht, dass es eine gute Idee wäre, einfach in meinem CI-Bereitstellungsskript zu sitzen und auf eine unbekannte Zeit zu warten, nur um die URL zu meinem benutzerdefinierten Controller aufrufen zu können, der wiederum php artisan config:cache
ausführt.
Wir sind also wieder bei der Frage – wie werden die Pfade in Konfigurationsdateien relativ zum App-Root erstellt und eine zwischengespeicherte Konfiguration generiert, die mit relativen Pfaden funktioniert?
Sie müssen Composer und unsere Optimierungsbefehle auf Ihrem Server ausführen, nicht vor der Bereitstellung.
In dem oben erwähnten Zitat aus der Laravel-Dokumentation bedeutet "Bereitstellungsroutine" nicht explizit, dass der Cache-Befehl auf dem Server ausgeführt werden muss und nicht in dem Ordner, der bereitgestellt werden soll. Daher denke ich, dass es sich lohnt, diesen Satz zu erweitern, damit die Leute keine falschen Annahmen treffen (wie ich es getan habe).
Wie auch immer, es ist eine Schande, dass wir in Konfigurationsdateien keine relativen Pfade anstelle von storage_path() verwenden können. Dies würde die Dinge für automatische CI-Bereitstellungen viel einfacher machen.
Ja, deshalb heißt es in der Dokumentation "Bereitstellungsroutine", nicht "Build-Routine" ...
Hilfreichster Kommentar
In dem oben erwähnten Zitat aus der Laravel-Dokumentation bedeutet "Bereitstellungsroutine" nicht explizit, dass der Cache-Befehl auf dem Server ausgeführt werden muss und nicht in dem Ordner, der bereitgestellt werden soll. Daher denke ich, dass es sich lohnt, diesen Satz zu erweitern, damit die Leute keine falschen Annahmen treffen (wie ich es getan habe).
Wie auch immer, es ist eine Schande, dass wir in Konfigurationsdateien keine relativen Pfade anstelle von storage_path() verwenden können. Dies würde die Dinge für automatische CI-Bereitstellungen viel einfacher machen.