WSL2中Laravel Sail执行Artisan命令创建文件后权限错误求助
问题原因
通过Laravel Sail执行Artisan命令创建模型时,命令是在Docker容器内部运行的,容器默认以root用户执行进程,所以生成的文件所有者是root用户。而你在VS Code中使用的是WSL的普通用户tarky,即便给了777权限,由于文件所有者不匹配,还是会触发写入权限拒绝的问题。手动在VS Code创建的文件所有者是tarky,所以能正常编辑。
解决办法
方法1:让Sail以当前WSL用户身份运行(推荐)
- 打开项目根目录的
.env文件,添加以下两行:WWWUSER=$(id -u) WWWGROUP=$(id -g) - 重启Sail容器:
sail down && sail up -d - 之后再用
sail artisan make:model TestModel创建文件,生成的文件所有者会和你WSL的tarky用户一致,VS Code可以正常编辑保存。
方法2:修复现有文件的所有者
如果已经创建了无法编辑的文件,直接修改整个项目的所有者为当前用户:
sudo chown -R tarky:tarky /home/tarky/projects/qr-project/
执行后就能正常编辑现有文件了。
注意
别用sudo chmod -R 777这种方式,权限过于宽松存在安全风险,而且无法从根本上解决所有者不匹配的问题。
内容的提问来源于stack exchange,提问作者Alessandro
相关产品推荐
相关产品推荐

