it-swarm.com.de

Laravel wirft nach der Aktualisierung den Fehler 'Das Bootstrap-/Cache-Verzeichnis muss vorhanden und beschreibbar'

Ich habe "Composer Update" verwendet, das einige Pakete aktualisiert hat. Während des Aktualisierungsvorgangs funktioniert die Website weiterhin. Die Website wird jedoch nicht geladen und sagt stattdessen: "Die kompilierte Servicedatei wurde entfernt". Stattdessen wird Folgendes angezeigt:

Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.

Das Merkwürdigste ist, wenn ich Composer Update erneut starte, funktioniert die Website wieder, bis die kompilierte Servicedatei entfernt wird. Anschließend wird derselbe Fehler erneut ausgegeben. Ich habe bereits die üblichen Dinge ausprobiert, die zu tun sind, wenn dieser Fehler auftritt (chown -R alles an den richtigen Benutzer/die richtige Gruppe und chmod alle Dateien und Ordner 664 bzw. 775). 

Ich weiß nicht mehr was ich tun soll, da der Fehler nicht 'richtig' erscheint.

32
Peter Bennink

Probieren Sie dies aus, nachdem Sie das Composer-Update ausgeführt haben:

php artisan cache:clear
113
Jim Wright

Führen Sie in Ihrer Laravel-Verzeichnisdatei Folgendes aus:

Sudo chmod -R 775 bootstrap/cache/
7
mpalencia

Kurzversion: Beim Hochladen mit etwas wie AWS eb cli Überprüfen Sie, ob der Ordner bootstrap/cache (der nicht über seinen Inhalt spricht) bereitgestellt wird.


Einige Hintergründe hinter meiner Antwort

Ich verwende Elastic Beanstalk von Amazon Web Services, um mein Laravel-Projekt zu hosten. Als ich gerade anfing, Laravel zu benutzen, habe ich nicht viel Ahnung davon, wie es funktioniert. Vor zwei Tagen Meine neuen Bereitstellungen waren auf halbem Weg mit der Fehlermeldung von OP abgestürzt. 

Am selben Tag wurde mir klar, dass ich nicht benutze 

 php artisan config:cache

konfigurationen zwischenspeichern, um die Dinge zu beschleunigen. Und ich habe dasselbe in composer.jsons Klauseln "post-install-cmd" und "post-update-cmd" eingefügt.
Und ich habe auch eine Anweisung in .ebignore -Datei hinzugefügt, um den Inhalt von / bootstrap/cache nicht hochzuladen (da sein Inhalt von der Umgebung abhängt aka, auf die meine localhost-Konfigurationen keine Bedeutung haben mein Produktionsserver)

Und facepalm Ich wusste nicht, dass dies das Hochladen des Ordners bootstrap/cache verhindert (wie git ignoriert eb cli leere Ordner) .
Als ich dann nachts mit dem Deployment begann, waren die Deployments abgestürzt .

Also habe ich gerade den leeren Platzhalter (sagen wir) .gitkeep -Datei in bootstrap/cache abgelegt. Und Bereitstellungen funktionieren wieder:)
(Obwohl das Problem so einfach war, erkannte ich den Grund, nachdem ich eine EBS EC2-Instanz für ein paar süße Schlafstunden gescannt und gegraben hatte ~. ~)

3
Vinay Vissh

Ich benutze cmder unter Windows 10 im nicht-erhöhten Modus (Nicht-Admin) . Befehl PHP Handwerker Cache: clear hat für mich nicht funktioniert . Der Ordner Bootstrap/Cache war nicht vorhanden und readonly sowohl aus dem Bootstrap- als auch aus dem Bootstrap-/Cache-Ordner entfernt .. _. Sowohl die Composer-Installation als auch das Composer-Update funktionieren jetzt.

1
Sadegh Ameri

Sie können dies zuerst tun:

     php artisan cache:clear

wenn es nicht klappt Sie sollten die Berechtigung 775 wie folgt festlegen:

     Sudo chmod -R 775 bootstrap/cache/
1
Hadi Note

es funktioniert für mich im Projektordner

 Sudo chmod -R 777 bootstrap/cashe

als laufen 

 composer update

als laufen 

 cache:clear
0
mohamed anwer

Wenn ein Webserver (z. B. Apache oder Nginx ) als Frontend verwendet wird, besteht die Lösung darin, das Verzeichnis bootstrap/cache der Webservergruppe zuzuordnen. Für Nginx :

 $ Sudo chgrp -R nginx bootstrap/cache
0