Laravel:file_put_contents()权限被拒绝-正确的存储/框架/缓存权限?

时间:2019-01-19 08:04:15

标签: php laravel nginx laravel-5 file-permissions

我在编辑var time; window.onload = function(){ time = setTimeout(function(){ document.location.reload(); }, 5000); }; $(document).ready(function(){ clearTimeout(time); }); 中的Laravel缓存时遇到了麻烦。我有一个正在运行的作业,该作业保存到某个缓存中,但是每次运行该作业时,都会发生此错误:

storage/framework/cache

详细信息

  • 当我保存到相同的缓存(例如,使用相同的键时,没有错误)
  • 我正在 nginx
  • 上运行
  • 我已经在Laravel应用程序所在的文件夹以及ERROR: file_put_contents(/var/www/html/---/storage/framework/cache/data/3c/c7/3cc7fd54b5a3cb08ceb0754f58371cec1196159a): failed to open stream: Permission denied 中运行了此命令sudo chown -R www-data:www-data storage
  • 执行sudo chmod -R 775 /home/<user>/<laravel folder>/storage会返回以下内容:ls -lh /storage/framework/cache
  • 现在我只是想知道完整,正确的Laravel权限集是什么,以及如何还原该设置。

感谢您的帮助!预先谢谢你。

2 个答案:

答案 0 :(得分:0)

1)如果查看您的cache.php配置文件,您会发现对于文件驱动程序,storage/framework/cache/data文件夹已设置为可写入:

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

这意味着必须正确设置该文件夹的权限,以便Web服务器用户可以成功写入该文件夹。

2)或您可以为我运行此命令以解决我的问题

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

答案 1 :(得分:0)

我使用sudo php artisan cache:clear完全清除了缓存。之后,问题再也没有发生。

与Ismoil的答案相反:永远不要创建Laravel存储文件夹777。这会带来安全风险。