web-dev-qa-db-ja.com

Filesystem.phpのErrorException

セッションストレージの問題

セッションストレージが動作しない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

16
Peder Wessel

更新後

chmod -R gu+w storage

chmod -R guo+w storage

php artisan cache:clear
55
maleeb

Laravel 5.2.0を使用すると、おそらく.gitignoreファイル内のstorageフォルダーを無視したことになります。問題は、composer installサーバーでは、ストレージフォルダーからすべてのファイルが作成されるわけではありません。それらをチェックする必要があります。

私の場合、ストレージフォルダーにはlogsフォルダーとappフォルダーを含まないframeworkフォルダーのみが含まれていました。これらを手動で作成する必要があるため、最後にこの構造が必要です。

storage
  - app
  - framework
    - cache 
    - sessions
    - views
  - logs

storageフォルダーを書き込み可能にすることを忘れないでください!

17
paulalexandru

ありがとう@ peder-wessel。あなたの答えは原因の説明ですが、永続的な解決策ではありません。Filesystem.phpファイルがLaravelベンダーディレクトリにあります。ある日、_composer update_再び問題が発生します。

ただし、セッションがファイルに保存されているため、この問題が発生していることがわかりました。私はこれを

_'driver' => 'file',
_

_'driver' => 'cookie',
_

in / app/config/session.php

たぶんlaravel作成者もこれを設定に追加する必要があります。すべての(共有)ホスティングが排他的ロック権を提供するわけではないためです

4
shamanSK

ホスティングを行う必要がありました。私のクラウドサービスは排他ロックをサポートしていません。交換しました

return file_put_contents($path, $contents, $lock ? LOCK_EX : 0);

return file_put_contents($path, $contents, $lock ? LOCK_SH : 0);

filesystem.phpの74行目

3
Peder Wessel

このエラーでパッケージからアセットを公開する際に問題が発生しましたfile_put_contents():このストリームでは排他ロックはサポートされていません

このパッケージが役立ちます NoLock

0
Hassan Gilak