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!
Antworten:
Der beste Weg, um dieses Problem zu lösen, ist, in das Verzeichnis zu gehen
laravel/bootstrap/cache
und dieconfig.php
Datei zu löschen . oder Sie können es auch umbenennen wieconfig.php.old
Und Ihr Problem wird behoben. Viel Spaß beim Codieren :-)quelle
php artisan config:cache
werden 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.Sie sollten den
php artisan config:cache
Befehl 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-cache
Route über Ihren Browser auf.Ich hoffe das ist hilfreich.
quelle
Nach einigen Recherchen verstehe ich - ich habe sehr ähnliche, aber unterschiedliche Stammprojektpositionen und deren Cache
/bootstrap/cache
. Nachdem das Cache-Löschprojekt gestartet wurde.quelle
Eigentlich war ich mit diesem Problem konfrontiert, als ich mein Projekt vom Server auf den lokalen verschoben habe.
im
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.
quelle
Diese Art von Problem tritt im Allgemeinen bei der Migration eines Servers auf einen anderen, eines Ordners auf einen anderen auf. Laravel behält den Cache und die Konfiguration (Dateiname) bei, wenn der Ordner anders ist als dieses Problem.
Lösung Führen Sie den folgenden Befehl aus:
https://laravel.com/docs/5.6/configuration#configuration-caching
quelle
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.
War genug für mich.
quelle
php artisan config:cache
Befehl 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.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!
quelle
Versuchen Sie es mit diesen Befehlen, die bei diesen Fehlern hilfreich waren
Pfad \ Projekt \ Speicher \ Framework \ Ansichten ...
Pfad \ Projekt \ Speicher \ Framework / Sitzungen ...
quelle
Der beste Weg, um dieses Problem zu lösen, ist, in das Verzeichnis zu gehen
laravel/bootstrap/cache
und 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.quelle
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
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.
quelle
Möglicherweise liegt ein Problem mit Ihrer Composer-Datei vor. Du könntest es versuchen:
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
quelle
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.
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.
quelle
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.
quelle
Wenn Sie Laravel im Docker ausführen, greifen Sie auf das Dateisystem zu
Navigieren Sie als Nächstes zum Stammverzeichnis Ihres Laravel-Projekts. Stellen Sie sicher, dass Sie sich im Speicher- / Framework- Ordner befinden:
Und sie sollten sowohl lesbar als auch beschreibbar sein.
quelle
Ich habe dieses Problem durch Erstellen eines
storage\framework\sessions
Ordners gelöst .quelle
Ich hatte ähnliche Probleme aufgrund von .gitignore für den
/storage
Ordner auf dem ersten Computer, dann geklontem Repository auf dem zweiten Computer und Laravel wurde überarbeitet, um den Sitzungscache aufzuschreibenDas manuelle Erstellen eines Ordners
/storage/sessions
könnte also eine Lösung sein.quelle
Die Lösung, die für mich funktioniert hat, besteht darin, die App nur als Administrator zu verwenden, wenn Sie es sind
mac
oderlinux
verwendensudo php artisan serve
CMD
als einadminstrator
und Projektverzeichnis und laufen dann weiterphp artisan serve
quelle
Das Löschen des Inhalts von
storage/framework/cache
hat den Trick für mich getan. Sonst hat nichts funktioniert ...quelle