使用 sail 生成的文件 IDE 无法编辑保存
问题描述
在使用 sail artisan make:migration create_xxx_table
等命令生成的迁移文件或者模型文件,用 IDE 打开时编辑后,保存文件时会提示没有权限保存或者无法保存,如下图:
问题原因
在构建编排容器时,没有指定 WWWUSER 与 WWWGROUP,导致 sail 生成的文件属于一个名为 1337 的未知用户,而 IDE 所属用户为你的 Ubuntu 默认用户,所以导致文件没有编辑权限。
解决办法
先进入项目目录,执行以下命令来删除容器(不会删除数据,放心使用):
sail down
获取你在 Ubuntu 子系统中的 UID,假设你的用户名为myhui
:
id myhui
保存运行结果:
uid=1000(myhui) gid=1000(myhui) groups=1000(myhui),0(root),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker)
打开.env
文件,将上述命令生成的UID与所属用户组 ID 加入以下配置项:
# uid
WWWUSER=1000
# 所属用户组
WWWGROUP=1000
回到 Ubuntu 子系统中,进入项目目录,执行以下命令启动容器:
sail up
使用 sail 命令来生成一个文件验证生成的文件权限是否正确:
sail artisan make:model TestModelNine
结果如下:
发现所属的用户已经是 Ubuntu 的默认用户了,使用编辑器修改文件,发现可以正常保存,问题解决。