Problem mit Sitzungsspeicher
Sitzungsspeicher funktionierte nicht mit meinem Laravel 5. Benutzte ihn einen Monat lang ohne Probleme. Aber seit dem letzten Upload auf den Webserver bekomme ich auf jeder Seite die folgende Antwort.
ErrorException in Filesystem.php line 74:
file_put_contents(): Exclusive locks are not supported for this stream
Viele Beiträge im Internet weisen darauf hin, den Verweis auf zu entfernen
$lock on line 74 in Filesystem.php
Scheint wie eine schnelle Lösung, die zu weiteren Problemen führen wird ...
Wie kümmere ich mich um die Ursache?
Verweise
https://stackoverflow.com/questions/29023948/laravel-5-file-put-contents-exclusive-locks-are-not-supported-for-this-strehttps: // laracasts.com/discuss/channels/general-discussion/l5-new-install-error
nach dem Update machen
chmod -R gu+w storage
chmod -R guo+w storage
php artisan cache:clear
Wenn Sie Laravel 5.2.0 verwenden, haben Sie wahrscheinlich den Ordner storage
in der Datei .gitignore
ignoriert. Die Sache ist, dass, wenn Sie composer install
auf Ihrem Server ausführen, nicht alle Dateien aus dem Speicherordner erstellt werden, sollten Sie diese prüfen!
In meinem Fall enthielt mein Speicherordner nur den Ordner logs
ohne die Ordner app
und framework
. Sie müssen diese manuell erstellen, damit Sie am Ende diese Struktur haben sollten:
storage
- app
- framework
- cache
- sessions
- views
- logs
Vergessen Sie nicht, den Ordner storage
beschreibbar zu machen!
danke @ peder-wessel. Ihre Antwort ist die Ursachenerklärung, aber keine dauerhafte Lösung. Sie funktioniert, bis wir die Hersteller erneut aktualisieren, da die Datei Filesystem.php im Laravel-Herstellerverzeichnis liegt. Eines Tages, wenn wir composer update
sind, wird es wieder Probleme geben. :(
Ich konnte jedoch feststellen, dass dieses Problem verursacht wurde, weil die Sitzung in einer Datei gespeichert wurde. Ich habe das von geändert
'driver' => 'file',
zu
'driver' => 'cookie',
in /app/config/session.php
Möglicherweise sollten Laravel-Ersteller dies auch zur Konfiguration hinzufügen, da nicht alle (gemeinsam genutzten) Hostings exklusive Sperrrechte bieten
Hatte mit dem Hosting zu tun. Mein Cloud-Service hat keine exklusiven Sperren unterstützt. Ich tauschte
return file_put_contents($path, $contents, $lock ? LOCK_EX : 0);
zu
return file_put_contents($path, $contents, $lock ? LOCK_SH : 0);
in Zeile 74 von Filesystem.php
Ich hatte Probleme mit der Veröffentlichung meiner Assets aus meinem Paket mit diesem Fehler File_put_contents (): Exklusive Sperren werden für diesen Stream nicht unterstützt
dieses Paket hilft NoLock