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
after update do
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
to
in /app/config/session.php
Maybe laravel creators should add this to configuration too, as not all (shared) hostings provide exclusive lock rights
If you use Laravel 5.2.0 you've probably ignored the
storage
folder in the.gitignore
file. The thing is that when you runcomposer 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 withoutapp
andframework
folders. You need to create those manually so you should have this structure at the end:Don't forget to make the
storage
folder writable !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
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