Laravel: отказано в разрешении file_put_contents () - правильные разрешения для хранилища / фреймворка / кэша? - PullRequest
0 голосов
/ 19 января 2019

У меня проблемы с редактированием кэша Laravel, который находится в storage/framework/cache.У меня запущено задание, которое сохраняет в определенный кеш, но каждый раз, когда оно запускается, возникает эта ошибка:

ERROR: file_put_contents(/var/www/html/---/storage/framework/cache/data/3c/c7/3cc7fd54b5a3cb08ceb0754f58371cec1196159a): failed to open stream: Permission denied

Подробно

  • Когда я сохраняю в тот же кеш (например, с тем же ключом, ошибки нет)
  • Я работаю на nginx
  • Я уже выполнил эту команду sudo chown -R www-data:www-data storage в папке находится приложение Laravel, а также sudo chmod -R 775 /home/<user>/<laravel folder>/storage
  • Выполнение ls -lh /storage/framework/cache возвращает следующее: drwsrwsr-x 55 www-data www-data 4.0K Jan 18 20:56 data.
  • Теперь мне просто интересно, что в полном объеме,правильно, набор разрешений Laravel и как его восстановить.

Любая помощь приветствуется!Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Я полностью очистил кеш, используя sudo php artisan cache:clear.Впоследствии проблема никогда не возникала.

В отличие от ответа Исмоила: никогда не создавайте папку хранилища Laravel 777.Это создает угрозу безопасности.

0 голосов
/ 19 января 2019

1) Если вы посмотрите на файл конфигурации cache.php, вы увидите, что для драйвера файла папка storage/framework/cache/data настроена на запись:

'file' => [
    'driver' => 'file',
    'path' => storage_path('framework/cache/data'),
],

Это означает, что права доступадля этой папки должно быть правильно установлено, чтобы пользователь веб-сервера мог успешно писать в эту папку.

2) или вы можете просто запустить эту команду для меня, она решила мою проблему

php artisan cache:clear 
chmod -R 775 storage/
composer dump-autoload
...