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

Thi*_*dam 9 php file-permissions nginx laravel laravel-5

我在编辑位于storage/framework/cache. 我有一个正在运行的作业保存到某个缓存,但每次作业运行时,都会发生此错误:

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

细节

  • 当我保存到相同的缓存时(例如使用相同的键,没有错误)
  • 我在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 权限集是什么以及如何恢复该设置。

任何帮助表示赞赏!先感谢您。

Thi*_*dam 12

我使用sudo php artisan cache:clear. 之后,问题就再也没有出现过。

反对 Ismoil 的回答:永远不要创建 Laravel 存储文件夹777。它会带来安全风险。