Laravel 5 show ErrorException file_put_contents konnte den Stream nicht öffnen: Keine solche Datei oder kein solches Verzeichnis


80

Ich habe ein Projekt auf Laravel 5 und arbeite damit im Büro und auch zu Hause. Es funktioniert gut, aber vor kurzem zu Hause hat es aufgehört zu funktionieren. Laravel zeigt mir zwei ErrorException

file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory

und

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory

Ich suche bei Google nach einer Problementscheidung und finde Informationen zu den richtigen Rechten. Alle Ratschläge beziehen sich auf Linux, aber ich arbeite unter Windows im Büro und auch zu Hause.

Wenn ich versuche, den Anwendungscache zu löschen und den Cache anzuzeigen, spricht der Handwerker mit mir - ... gelöscht. Cache-Daten und -Ansichten sind jedoch im Speicher vorhanden.

Wie kann ich dieses Problem beheben?

Danke im Voraus!


6
Yo kann den Cache „php Handwerker cache: clear“ versuchen Reinigung ich auf Linux bin, so dass ich auf Windows nicht sicher Erlaubnis bin, aber auf Ordner - Eigenschaften prüfen , ob es nicht read_only ist (Rechtsklick auf Ordner-> Eigenschaften)
educolo

@educolo Ich glaube nicht, dass es um Verzeichnisrechte geht, da es mehrere Monate in Ordnung war.
Evgeniy

Antworten:


144

Der beste Weg, um dieses Problem zu lösen, ist, in das Verzeichnis zu gehen laravel/bootstrap/cacheund die config.phpDatei zu löschen . oder Sie können es auch umbenennen wie config.php.old Und Ihr Problem wird behoben. Viel Spaß beim Codieren :-)


4
Ja, das würde helfen, aber das Löschen des Caches kann den Job erledigen. Wenn Sie außerhalb der Vagrant Box ausführen, php artisan config:cachewerden die Pfade für die Anwendungen neu erstellt. Wenn wir eine Anwendung in der Vagrant-Box ausführen, unterscheiden sich die Pfade beispielsweise von Pfaden für Dämmerungstests.
George Mylonas

Warum lässt die Konfiguration von Laravel Laravel sterben? Funktioniert danke.
Andrew

config: Cache wurde aus irgendeinem Grund nicht repariert.
Andrew

Sauber, einfach und direkt für diejenigen, die zu diesem Zeitpunkt oder allgemein nicht über SSH zugreifen können. Gute Antwort!
lzoesch

config: clear funktioniert für mich neben dem Umbenennen der Datei funktioniert auch,
Mohammed Omer

60

Sie sollten den php artisan config:cacheBefehl normalerweise als Teil Ihrer Produktionsbereitstellungsroutine ausführen . Als Lösung für Ihr Problem empfehle ich Ihnen, die Cache-Datei neu zu erstellen, um das Laden der Konfiguration zu beschleunigen.

Führen Sie dazu die folgenden Artisan-Befehle in Ihrer Befehlszeile aus

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

Sie können den Befehl programmgesteuert ausführen, indem Sie Ihren Routen Folgendes hinzufügen:

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    $exitCode = Artisan::call('config:cache');
    return 'DONE'; //Return anything
});

Rufen Sie dann die clear-cacheRoute über Ihren Browser auf.

Ich hoffe das ist hilfreich.


47

Nach einigen Recherchen verstehe ich - ich habe sehr ähnliche, aber unterschiedliche Stammprojektpositionen und deren Cache /bootstrap/cache. Nachdem das Cache-Löschprojekt gestartet wurde.


Dies löste mein Problem, nachdem viele Lösungsvorschläge fehlgeschlagen waren, danke
Agung Sagita

@ AgungSagita kein Problem;)
Evgeniy

Du bist ein Lebensretter
Festus Yuma

Dies löste mein Problem, nachdem ich viele andere Alternativen ausprobiert hatte. Danke :)
binmosa

Ich wünschte, ich hätte dies als Antwort auf meine Frage zu einem fehlenden Dienstanbieter gesehen: stackoverflow.com/questions/58192052/…
j3py

12

Eigentlich war ich mit diesem Problem konfrontiert, als ich mein Projekt vom Server auf den lokalen verschoben habe.

im

Speicher / Framework

Vier grundlegende Ordner sind Cache, Sitzungen, Tests, Ansichten erforderlich

In meinem Fall fehlten möglicherweise Sitzungen in gitignore.

Also habe ich manuell einen Sitzungsordner erstellt und den Browser aktualisiert und es hat funktioniert.

Wenn wir dieses Problem löschen, kann jeder fehlende Ordner behoben werden.


2
Dieser ist wahr
Ahmad Jamil Al Rasyid


6

Apache + WSL unter Windows

Dies ist ein dummer Fehler und eine andere Antwort als die anderen, aber ich werde es hinzufügen, weil es mir passiert ist.

Wenn Sie WSL (Linux Bash unter Windows) verwenden, um Ihre Laravel-Anwendung zu verwalten, während Sie Ihren Server mit Windows Apache ausführen, werden beim Ausführen von Caching-Befehlen in der WSL der Linux-Pfad und nicht der Windows-Pfad zu den Sitzungen und anderen Ordnern gespeichert .

Lösung

Führen Sie einfach die Cache- Löschbefehle in der Powershell und nicht in der WSL aus.

$ php artisan optimize

War genug für mich.


Ich bin auf dasselbe Problem gestoßen. Ich verwende Windows und auch eine Linux-Instanz auf einer virtuellen VMWare-Maschine. Auf diese Weise kann ich sowohl unter Windows als auch unter Linux testen. Wenn ich den php artisan config:cacheBefehl jedoch unter Windows ausführte, lud mein Linux die Webseiten der Anwendung nicht mehr. Wenn Sie in den Ordner bootstrap / cache gehen und dort die Datei config.php löschen, wurde das Problem behoben.
David Tran

4

Wenn Sie kein Shared Hosting haben und keinen Befehlszeilenzugriff haben, navigieren Sie einfach zum Ordner laravel / bootstrap / cache und löschen (oder benennen) Sie die Datei config.php um. Fertig!


3

Versuchen Sie es mit diesen Befehlen, die bei diesen Fehlern hilfreich waren

Pfad \ Projekt \ Speicher \ Framework \ Ansichten ...

php artisan view:clear

Pfad \ Projekt \ Speicher \ Framework / Sitzungen ...

php artisan config:cache

2
Wenn Sie eine neue Antwort veröffentlichen, während es bereits mehrere Antworten gibt, sollten Sie weitere Erklärungen hinzufügen, damit andere aus Ihrer Antwort lernen können
Nico Haase

2

Der beste Weg, um dieses Problem zu lösen, ist, in das Verzeichnis zu gehen laravel/bootstrap/cacheund alle Dateien aus dem Cache zu löschen.

Führen Sie dazu die folgenden Artisan-Befehle in Ihrer Befehlszeile aus
1. php artisan config:clear
2. php artisan cache:clear
3. php artisan config:cache

In Ihrem Panel oder Server können Sie Befehle ausführen, indem Sie Ihren Routen Folgendes hinzufügen:

    Route::get('/clear-cache', function() {
        $run = Artisan::call('config:clear');
        $run = Artisan::call('cache:clear');
        $run = Artisan::call('config:cache');
        return 'FINISHED';  
    });

Rufen Sie dann die  www.yourdomain.com/clear-cache Route über Ihren Browser auf.


2

Das Ändern des Namens von /bootstrap/cache/config.php in config.php.old funktioniert bei mir nicht und das Löschen des Caches mit den Befehlen artisan

  1. PHP Artisan Config: klar
  2. PHP Artisan Cache: klar
  3. PHP Artisan Config: Cache

Und aus irgendeinem seltsamen Grund kann ich die Berechtigung für den Eigentümer in den Verzeichnissen nicht ändern, sodass meine Lösung meine IDE (Visual Studio Code) als Administrator ausführte und alles funktioniert.

Mein Projekt befindet sich in einem F: / Pfad einer anderen Festplatte.


1

Möglicherweise liegt ein Problem mit Ihrer Composer-Datei vor. Du könntest es versuchen:

  • composer install installiert die Herstellerpakete gemäß composer.lock (oder erstellt composer.lock, falls nicht vorhanden).
  • Das Composer-Update regeneriert immer composer.lock und installiert die neuesten Versionen der verfügbaren Pakete basierend auf composer.json

  • Composer Dump-Autoload lädt nichts herunter. Es wird lediglich die Liste aller Klassen neu generiert, die in das Projekt aufgenommen werden müssen (autoload_classmap.php). Ideal, wenn Sie eine neue Klasse in Ihrem Projekt haben. Im Idealfall führen Sie Composer dump-autoload -o aus, um das Laden Ihrer Webseiten zu beschleunigen. Der einzige Grund, warum es nicht standardmäßig ist, ist, dass die Generierung etwas länger dauert (aber nur geringfügig auffällt).

Quelle


Leider hat es nicht geholfen. Ich versuche alle Ihre Ratschläge.
Evgeniy

Entschuldigung :( Sie haben in Ihrem ursprünglichen Beitrag gesagt, dass Sie dachten, es könnten die Rechte / Berechtigungen sein. Dieser Beitrag enthält viele Informationen zum Ändern der Rechte an Dateien und Ordnern, wenn Sie glauben, dass dies das Problem sein könnte. Ich arbeite nicht mit Windows, also weiß ich nicht viel darüber. Ich hoffe, es funktioniert für Sie.
Rachael MacKeigan

Ich glaube nicht, dass das Problem die Verzeichnisrechte betrifft, da es mehrere Monate in Ordnung war. Soweit ich mich erinnere, aktualisiere ich einige Laravel-Pakete zuvor und dann funktioniert es nicht mehr. Aber am nächsten Tag im Büro begann das Projekt gut.
Evgeniy

1

Der Grund für dieses Problem sind die Cache-Dateien in localhost. Demnach habe ich verschiedene Dinge wie folgt versucht, um den Cache in meinem Projekt zu leeren, aber jedes Mal, wenn ich fehlgeschlagen bin.

  • Es wurde versucht, Cahe-Befehle durch Ändern der Datei web.php (mit handwerklichen Codes) zu löschen.
  • Versucht, den Cache durch Verbinden von SSH zu löschen (über PUTTY)
  • Es wurde versucht, mein Projekt in der Subdomain zu erstellen und ein neues öffentliches Verzeichnis zu erstellen

Ich habe also eine Lösung für dieses Problem gefunden, nachdem alle oben genannten Schritte fehlgeschlagen sind und es für mich perfekt funktioniert hat. Ich habe die Datei cache.php im Verzeichnis host_route / bootstrap / cache gelöscht .

Ich denke, diese Antwort wird Ihrem Problem helfen.


1

In meinem Fall war es nichts, was mit PHP Artisan Befehlen behoben werden konnte. Das Problem waren Ordnerberechtigungen für den Ordner / storage. Der Fehler machte das nicht klar.


1

Wenn Sie Laravel im Docker ausführen, greifen Sie auf das Dateisystem zu

$ docker exec -it name-of-laravel-container /bin/bash

Navigieren Sie als Nächstes zum Stammverzeichnis Ihres Laravel-Projekts. Stellen Sie sicher, dass Sie sich im Speicher- / Framework- Ordner befinden:

  1. Zwischenspeicher
  2. Sitzungen
  3. testen
  4. Ansichten

Und sie sollten sowohl lesbar als auch beschreibbar sein.


1

Ich habe dieses Problem durch Erstellen eines storage\framework\sessionsOrdners gelöst .


0

Ich hatte ähnliche Probleme aufgrund von .gitignore für den /storageOrdner auf dem ersten Computer, dann geklontem Repository auf dem zweiten Computer und Laravel wurde überarbeitet, um den Sitzungscache aufzuschreiben

Das manuelle Erstellen eines Ordners /storage/sessionskönnte also eine Lösung sein.


0

Die Lösung, die für mich funktioniert hat, besteht darin, die App nur als Administrator zu verwenden, wenn Sie es sind

  1. auf macoder linuxverwendensudo php artisan serve
  2. auf Windows versuchen zu öffnen , CMDals ein adminstratorund Projektverzeichnis und laufen dann weiterphp artisan serve

0

Das Löschen des Inhalts von storage/framework/cachehat den Trick für mich getan. Sonst hat nichts funktioniert ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.