セッションストレージの問題
セッションストレージが動作しないLaravel 5.問題なく1か月使用しました。しかし、Webサーバーへの最新のアップロード以降、すべてのページで次の応答が返されます。
ErrorException in Filesystem.php line 74:
file_put_contents(): Exclusive locks are not supported for this stream
インターネット上の多くの投稿は、への参照を削除することを示しています
$lock on line 74 in Filesystem.php
将来的に他の問題につながる簡単な修正のようです...
根本原因をどのように処理しますか?
参考文献
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
更新後
chmod -R gu+w storage
chmod -R guo+w storage
php artisan cache:clear
Laravel 5.2.0を使用すると、おそらく.gitignore
ファイル内のstorage
フォルダーを無視したことになります。問題は、composer install
サーバーでは、ストレージフォルダーからすべてのファイルが作成されるわけではありません。それらをチェックする必要があります。
私の場合、ストレージフォルダーにはlogs
フォルダーとapp
フォルダーを含まないframework
フォルダーのみが含まれていました。これらを手動で作成する必要があるため、最後にこの構造が必要です。
storage
- app
- framework
- cache
- sessions
- views
- logs
storage
フォルダーを書き込み可能にすることを忘れないでください!
ありがとう@ peder-wessel。あなたの答えは原因の説明ですが、永続的な解決策ではありません。Filesystem.phpファイルがLaravelベンダーディレクトリにあります。ある日、_composer update
_再び問題が発生します。
ただし、セッションがファイルに保存されているため、この問題が発生していることがわかりました。私はこれを
_'driver' => 'file',
_
に
_'driver' => 'cookie',
_
in / app/config/session.php
たぶんlaravel作成者もこれを設定に追加する必要があります。すべての(共有)ホスティングが排他的ロック権を提供するわけではないためです
ホスティングを行う必要がありました。私のクラウドサービスは排他ロックをサポートしていません。交換しました
return file_put_contents($path, $contents, $lock ? LOCK_EX : 0);
に
return file_put_contents($path, $contents, $lock ? LOCK_SH : 0);
filesystem.phpの74行目
このエラーでパッケージからアセットを公開する際に問題が発生しましたfile_put_contents():このストリームでは排他ロックはサポートされていません
このパッケージが役立ちます NoLock