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 as sudo 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