ErrorException in Filesystem.php

2019-01-17 08:04发布

Issue with session storage

Session storage not working with my Laravel 5. Used it for a month without problems. But since latest upload to web server I get the following response on every page.

ErrorException in Filesystem.php line 74:
file_put_contents(): Exclusive locks are not supported for this stream

Many posts on the internet are indicating to remove the reference to

$lock on line 74 in Filesystem.php

Seems like a quick fix which will lead to other issues down the road...

How do I take care of the root cause?

References

https://stackoverflow.com/questions/29023948/laravel-5-file-put-contents-exclusive-locks-are-not-supported-for-this-stre https://laracasts.com/discuss/channels/general-discussion/l5-new-install-error

5条回答
孤傲高冷的网名
2楼-- · 2019-01-17 08:28

after update do

chmod -R gu+w storage

chmod -R guo+w storage

php artisan cache:clear
查看更多
男人必须洒脱
3楼-- · 2019-01-17 08:33

thanks @peder-wessel. Your answer is the cause explanation but not a permanent solution and will work until we update the vendors again as Filesystem.php file is inside Laravel vendor directory. One day, when we composer update it will cause problem again. :(

However I was able to find out that this issue is caused because Session is saved to file. I changed this from

'driver' => 'file',

to

'driver' => 'cookie',

in /app/config/session.php

Maybe laravel creators should add this to configuration too, as not all (shared) hostings provide exclusive lock rights

查看更多
迷人小祖宗
4楼-- · 2019-01-17 08:37

If you use Laravel 5.2.0 you've probably ignored the storage folder in the .gitignore file. The thing is that when you run composer install on your server not all the files from the storage folder are created, you should check those !

In my case my storage folder contained only the logs folder without app and framework folders. You need to create those manually so you should have this structure at the end:

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

Don't forget to make the storage folder writable !

查看更多
不美不萌又怎样
5楼-- · 2019-01-17 08:37

I had problem with publishing my assets from my package with this error file_put_contents(): Exclusive locks are not supported for this stream

this package helps NoLock

查看更多
我想做一个坏孩纸
6楼-- · 2019-01-17 08:39

Had to do with the hosting. My cloud service did not support exclusive locks. I exchanged

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

to

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

on line 74 of Filesystem.php

查看更多
登录 后发表回答