Laravel 9中SSH用户执行cache:clear命令的权限配置问题
Laravel 9缓存权限问题解决方案
不需要切换到www-data用户连接服务器,以下几种方法可以解决你的问题:
方法1:调整缓存目录的组权限(推荐)
你的user_composer用户已隶属于www-data组,只需给缓存目录开放组写入权限,并确保新文件继承组归属:
- 给缓存目录添加组写入权限:
chmod -R g+w storage/framework/cache/data
- 设置setgid位,让新创建的文件自动继承目录的
www-data组:
chmod -R g+s storage/framework/cache/data
后续无论是Apache还是user_composer操作缓存目录,都不会出现权限冲突。
方法2:临时以www-data身份执行命令
直接用sudo指定www-data用户运行缓存清理命令,无需切换整个会话:
sudo -u www-data php artisan cache:clear
输入你的user_composer用户密码即可执行(前提是该用户有sudo权限)。
方法3:配置Laravel默认权限(长期优化)
修改Laravel的文件系统配置,让新生成的缓存文件自动拥有组可写权限:
打开config/filesystems.php,找到local磁盘配置,添加permissions项:
'local' => [ 'driver' => 'local', 'root' => storage_path('app'), 'permissions' => [ 'file' => [ 'public' => 0664, 'private' => 0644, ], 'dir' => [ 'public' => 0775, 'private' => 0755, ], ], ],
保存后,新生成的缓存文件会自动应用0664权限(组可写),目录应用0775权限,从根源避免权限问题。
内容的提问来源于stack exchange,提问作者Giacomo M
相关产品推荐
相关产品推荐

