Laravel zeigt an: „Cache konnte nicht geleert werden. Stellen Sie sicher, dass Sie über die entsprechenden Berechtigungen verfügen. “

75

Laravel zeigte mir "Zugriff für Benutzer 'homestead' @ 'localhost' verweigert (mit Passwort: YES)". Eine Lösung hierfür war das Löschen des Caches und des gespeicherten Konfigurationscaches mit den folgenden drei Befehlen:

php artisan cache:clear
php artisan config:clear
php artisan config:cache

Danach php artisan cache:clearsagt das Terminal:

Failed to clear cache. Make sure you have the appropriate permissions. (mit rotem Hintergrund)

Das Ausführen des zweiten und dritten Codes ( php artisan config:clearund php artisan config:cache) funktioniert einwandfrei! Aber es gibt mir immer noch den Fehler beim Eingeben der ersten Zeile. Kann jemand erklären warum?

E.Akio
quelle
3
Es hat bei mir funktioniert, als ich die Reihenfolge geändert habe (route: clear, config: clear, dann cache: clear).
Ihab Shoully
Verwenden Sie sudo, wenn keine der vorgeschlagenen Lösungen für Sie funktioniert. ;)
MASh

Antworten:

244

Wenn das dataVerzeichnis unter ( storage/framework/cache/data) nicht vorhanden ist , tritt dieser Fehler auf.

Dieses dataVerzeichnis ist bei einer Neuinstallation standardmäßig nicht vorhanden.

Das datamanuelle Erstellen des Verzeichnisses unter ( storage/framework/cache) sollte dieses Problem beheben.

Mythos XY
quelle
Direkt vor Ort! Ich bin mit Ihrer Antwort
fertig
19
Ich habe storage/framework/cache/dataund bekomme diese Nachricht immer noch.
Jay Bienvenu
@JayBienvenu Es sollte sowieso ohne das Datenverzeichnis funktionieren - nur storage/framework/cachedieser Pfad muss bereits vorhanden sein (zumindest für neuere Laravel-Versionen 5.7+) - prüfen Sie, ob Sie den Standardspeicherpfad nicht überschreiben, und wenn nicht, ob Ihr Cache-Ordner über ausreichende Berechtigungen verfügt für Webserver / PHP; Angenommen, der Standard-FileStore-Cache - das Problem tritt wahrscheinlich in der vendor/laravel/framework/src/Illuminate/Cache/FileStore.phpMethode auf flush()- können Sie von dort aus mit dem Debuggen beginnen :)
jave.web
69

Versuchen Sie, diese zwischengespeicherten Dateien im Bootstrap-Ordner zu löschen:

/bootstrap/cache/packages.php
/bootstrap/cache/services.php
/bootstrap/cache/config.php

Dann renne php artisan cache:clear

Sid
quelle
2
Du sparst meine Zeit. :)
Md. Abu Taleb
1
@SumonMahmud freut sich zu hören!
Sid
1
Nachdem ich dank Ihnen viele Antworten erhalten hatte, konnte ich dies beheben. Vielen Dank
Nipun Tharuksha
1
@NipunTharuksha keine Probs!
Sid
3
Sie, Sir, haben den MVP verdient. Das Verschieben meines Projekts in ein anderes Verzeichnis, einen anderen Namen und übrigens eine andere Gruppe + einen anderen Reponamen auf gitlab endete mit diesem Problem. Du hast das gelöst! Vielen Dank !
Florian Doyen
33

Berufung

php artisan config:cache 

Vor

php artisan cache:clear

Das Problem wurde behoben.

Martin Cup
quelle
Oh, das war es. Ich habe das Projektverzeichnis verschoben und den Cache ausgeführt: clear hat versucht, den Cache unter dem alten Pfad zu löschen, auf den es keinen Zugriff hatte (tatsächlich war kein Ordner vorhanden). Vielen Dank!
Orkhan Alikhanov
23

Nur nur Ordner mit dem Namen hinzufügen datain storage/framework/cache/und versuchen:

php artisan cache:clear
Kamlesh
quelle
2

Ich habe mein Projekt in einem Docker-Container ausgeführt und später versucht, über laragon darauf zuzugreifen. Ich hatte ein ähnliches Problem, das auf kompilierte Konfigurationen in zurückzuführen war /bootstrap/cache/config.php.

Ich habe die Passform durch Ausführen behoben. php artisan config:clearDadurch wird die /bootstrap/cache/config.phpDatei automatisch gelöscht .

AbdulmatinSanni
quelle
2

Geben Sie hier die Bildbeschreibung ein

Erster Versuch:

Überprüfen Sie, ob sich in "storage / framework / cache /" ein Ordner "data" befindet. Wenn dies nicht der Fall ist, erstellen Sie es manuell. (Erstellen Sie einen neuen Ordner mit dem Namen "Daten")

Option 2:

Wenn sich in "storage / framework / cache /" ein Ordner "data" befindet. Entfernen Sie ALLE vorhandenen Ordner.

Dann endgültig, folgendes:

php artisan cache:clear

Dies sollte das folgende Problem beheben: "Fehler beim Löschen des Cache. Stellen Sie sicher, dass Sie über die entsprechenden Berechtigungen verfügen."

Raymond
quelle
1

Möglicherweise müssen Sie den Autoloader mit löschen composer dump-autoload

Wenn dies nicht funktioniert, können Sie die folgenden (normalerweise) nicht verfolgten Dateien manuell entfernen, um den Autoloader und den Cache zu löschen, wenn sie blockiert werden:

/bootstrap/cache/packages.php

/bootstrap/cache/services.php

jeremykenedy
quelle
Ich habe diese Antwort (Löschen von Paketen und Servicedateien aus dem Bootstrap / Cache-Ordner) zu einem anderen Thema gesehen, aber warum sollte es eine Lösung sein? Außerdem gab es keine Änderungen, nachdem sie entfernt oder dump-autoload verwendet wurden.
E.Akio
Wenn der Autoloader mit zwischengespeicherten Konfigurationseinstellungen überlastet ist, die nicht Ihren Wünschen entsprechen, wie z. B. den DB-Verbindungen, können Sie an einen Ort gelangen, an dem sie nicht gelöscht werden können.
Jeremykenedy
1

Ich hatte das gleiche Problem, bemerkte aber, wenn Sie PHP Artisan Config ausführen: Löschen Sie es auch standardmäßig Cache: Löschen Sie direkt danach. Wenn Sie es erneut ausführen, befindet sich kein Cache darin und gibt diesen Fehler aus. Sie müssen nur PHP Artisan Config ausführen: Clear. Ich bin nicht sicher, warum cache: clear fehlschlägt, wenn es alleine ausgeführt wird, aber das Ausführen von config: clear ist eine gute Alternative.

Hier ist ein hilfreicher Alias, mit dem ich alles in der App lösche.

laraclear='php artisan config:cache && php artisan config:clear && php artisan view:clear && php artisan route:clear && php artisan telescope:clear && php artisan debugbar:clear'

Entfernen Sie alle unerwünschten Befehle, die Sie nicht verwenden.

Laravel Coder
quelle
0

Sie sollten die Berechtigung mit dem folgenden Befehl aktualisieren:

sudo chown -R www-data:www-data ./storage

Dadurch wird das folgende Problem behobenGeben Sie hier die Bildbeschreibung ein

Ranjan Fadia
quelle
0

Hatte das gleiche Problem auf meiner Vagrant / Homestead-VM. Alle anderen Dinge in diesem Thread haben nicht geholfen.

Die Lösung war vagrant reload --provision

Pixelprotagonist
quelle
0

Wenn keine dieser Arbeiten für Sie ausgeführt wird, führen Sie einfach Ihren PHP Artisan Cache aus: Befehl clear mit sudo. zB sudo php artisan cache:clear Danke später ~!

Malik
quelle
-1

Kann das nicht gelöst werden?

$php artisan optimize:clear
Compiled views cleared!
Application cache cleared!
Route cache cleared!
Configuration cache cleared!
Compiled services and packages files removed!
Daiki
quelle
-3

Möglicherweise müssen Sie 777 -R Speicherordner chmod. und ich denke, es kann auch www-data chown: www-data

Martin Adiputra
quelle
1
Ich versuche wirklich, 777 NICHT für meine Projekte zu verwenden. Ich brauche es nur, wenn ich über einen Browser auf den öffentlichen Ordner zugreife. Da ich mein Projekt jedoch verwenden kann, indem ich einen Serve mit localhost: 8000 erstelle, vermeide ich 777. Und die
angezeigten WWW
nicht in deinem gesamten Projekt. nur Speicherordner. und chown seine www-Daten: www-Daten nicht Benutzer: www-Daten.
Probieren Sie
1
Selbst im Speicherordner gibt es viele Beiträge, die besagen, 777 nicht einmal in einem einzelnen Ordner zu verwenden, und sie haben auch einen guten Grund für Sicherheitsmaßnahmen ... Und ja, Benutzer: www-data war das, was ich versucht habe: /
E.Akio
oder vielleicht können Sie 775 Erlaubnis.
Martin Adiputra
sudo chown -R www-Daten: www-Daten / Pfad / zu / Ihrem / Projekt / Anbieter sudo chown -R www-Daten: www-Daten / Pfad / zu / Ihrem / Projekt / Speicher
Martin Adiputra