Laravel: file_put_contents() permission denied — correct storage/framework/cache permissions?
I'm having struggles with editing the Laravel cache, which is located in storage/framework/cache
. I've got a job running that saves to a certain cache, but every time the job runs, this error occurs:
ERROR: file_put_contents(/var/www/html/---/storage/framework/cache/data/3c/c7/3cc7fd54b5a3cb08ceb0754f58371cec1196159a): failed to open stream: Permission denied
Details
- When I save to the same cache (e.g. with the same key, there is no error)
- I am running on nginx
- Already have I run this command
sudo chown -R www-data:www-data storage
in the folder the Laravel application is located, as well assudo chmod -R 775 /home/<user>/<laravel folder>/storage
- Performing
ls -lh /storage/framework/cache
returns the following:drwsrwsr-x 55 www-data www-data 4.0K Jan 18 20:56 data
. - Now I'm just wondering what the full, correct, Laravel permission set is and how to restore that set-up.
Any help is appreciated! Thank you in advance.
Solution 1:
I cleared the cache completely using sudo php artisan cache:clear
. Afterwards, the problem never occurred.
Opposed to Ismoil's answer: never make the Laravel storage folder 777
. It poses a security risk.
Solution 2:
1) If you take a look at your cache.php
config file you'll see that for the file driver the storage/framework/cache/data
folder is set for writing:
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
],
That means that the permissions for that folder must be properly set so that the web server user can successfully write to that folder.
2) or you can just running this command for me it solved my problem
php artisan cache:clear
chmod -R 775 storage/
composer dump-autoload