web-dev-qa-db-de.com

Laravel 5 zeigt, dass ErrorException file_put_contents den Stream nicht öffnen konnte: Keine Datei oder Verzeichnis

Ich habe ein Projekt auf Laravel 5 und arbeite damit sowohl im Büro als auch zu Hause. Es funktioniert gut, aber vor kurzem hörte es auf zu arbeiten. 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 eine Problementscheidung mit Google und finde Informationen zu den richtigen Rechten. Alle Ratschläge beziehen sich auf Linux, aber ich arbeite in Windows sowohl im Büro als auch zu Hause.

Wenn ich versuche, den Anwendungs-Cache zu löschen und den Cache anzuzeigen, sprechen Sie mit mir - ... gelöscht. Zwischenspeicherdaten und Ansichten sind jedoch im Speicher vorhanden.

Wie kann ich dieses Problem beheben?

Danke im Voraus!

15
Evgeniy

Nach einiger Recherche verstehe ich - ich habe sehr ähnliche, aber unterschiedliche Root-Projektstandorte und deren Speicherort in /bootstrap/cache. Nach dem Löschen des Cache-Projekts wurde begonnen. 

23
Evgeniy

Um dieses Problem zu lösen, gehen Sie am besten in das Verzeichnis "laravel/bootstrap/cache" und löschen Sie die Datei config.php. oder Sie können es auch umbenennen wie config.php.old Und Ihr Problem wird behoben . Glückliche Codierung :-)

39
Amit Verma

In der Regel sollten Sie den Befehl php artisan config:cache als Teil Ihrer Produktionsbereitstellungsroutine ausführen. ich schlage dich vor

  1. Entfernen Sie die Konfigurationscache-Datei
  2. Leeren Sie den Anwendungscache
  3. Erstellen Sie eine Cache-Datei, um das Laden der Konfiguration zu beschleunigen

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

Wenn Sie keinen Zugriff auf die Befehlszeile auf Ihrem Server haben, können Sie Befehle programmgesteuert ausführen, indem Sie den Routen Folgendes hinzufügen:

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

Rufen Sie dann die clear-cache-Route in Ihrem Browser auf.

Ich hoffe das ist hilfreich.

19
Elisha Senoo

Diese Art von Problem tritt im Allgemeinen bei der Migration eines Servers zu einem anderen, eines Ordners in einen anderen auf. Laravel behält den Cache und die Konfiguration (Dateiname) bei, wenn sich der Ordner unterscheidet, dann tritt dieses Problem auf.

Lösungslauf mit folgendem Befehl: 

php artisan config:cache

https://laravel.com/docs/5.6/configuration#configuration-caching

4

Apache + WSL unter Windows

Dies ist ein dummer Fehler und eine andere Antwort als die anderen, aber ich werde sie 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 windows Apache zum Ausführen Ihres Servers verwenden, führen Sie alle Caching-Befehle in aus Die WSL speichert den Linux-Pfad und nicht den Windows-Pfad in den Sitzungen und anderen Ordnern.

Lösung

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

$ php artisan optimize

War genug für mich.

3
Azeirah

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

im

lagerung/Rahmen

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

In meinem Fall fehlten die Sitzungen möglicherweise in gitignore.

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

So kann jeder der fehlenden Ordner, wenn wir dieses Problem löschen, behoben werden.

3
shivanikoko

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

0
Peter Drinnan

Wenn Sie über Shared-Hosting verfügen, wenn Sie nicht über die Befehlszeile verfügen, navigieren Sie einfach zum Ordner laravel/bootstrap/cache und löschen (oder benennen Sie) config.php.

0

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

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

php artisan view:clear

pfad\Projekt\Speicher\Rahmen/Sitzungen ...

php artisan config:cache
0
Carlos Avalos

Der Grund für dieses Problem sind die Cache-Dateien in localhost. Dementsprechend habe ich wie folgt versucht, den Cache meines Projekts zu löschen, aber jedes Mal bin ich gescheitert.

  • Es wurde versucht, die cahe-Befehle durch Ändern der web.php-Datei (mit handwerklichen Codes) zu löschen.
  • Es wurde versucht, den Cache durch Verbinden von SSH zu löschen (über PuTTY).
  • Es wurde versucht, mein Projekt in der untergeordneten Domäne innerhalb eines neuen Verzeichnisses Public zu hosten

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

Ich denke, diese Antwort wird Ihrem Problem helfen.

0
Roshan Aravinda

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). 
  • composer update generiert composer.lock immer neu und installiert die neuesten Versionen verfügbarer Pakete basierend auf composer.json

  • composer dump-autoload lädt nichts herunter. Es generiert nur die Liste aller Klassen neu, die in das Projekt aufgenommen werden müssen (autoload_classmap.php). Ideal für eine neue Klasse in Ihrem Projekt. Idealerweise führen Sie den Composer dump-autoload -o aus, um Ihre Webseiten schneller zu laden. Der einzige Grund, warum es nicht voreingestellt ist, ist, dass die Generierung etwas länger dauert (aber nur geringfügig auffällt).

Quelle

0