使用Docker搭建Laravel Sail时遭遇错误求助
解决WSL2执行Laravel安装命令时出现getpwuid(0)错误的问题
问题场景
按照Laravel 9.x Windows官方文档执行项目创建命令:
curl -s https://laravel.build/example-app | bash
出现以下WSL相关错误:
Processing fstab with mount -a failed. <3>WSL (17) ERROR: CreateProcessEntryCommon:358: getpwuid(0) failed 2 <3>WSL (17) ERROR: CreateProcessEntryCommon:362: getpwuid(0) failed 2 <3>WSL (17) ERROR: CreateProcessEntryCommon:570: execvpe /bin/bash failed 2 <3>WSL (17) ERROR: CreateProcessEntryCommon:579: Create process not expected to return
已安装Docker、WSL2及Ubuntu发行版,但无法正常执行命令。
解决方案
1. 修正WSL默认用户配置
该错误常因WSL默认用户未正确设置导致,执行以下步骤:
- 打开CMD,运行对应发行版的默认用户设置命令:
(若你的Ubuntu发行版命名为ubuntu config --default-user rootubuntu2204等,替换为对应名称) - 直接在CMD中运行
wsl进入Ubuntu终端,再执行Laravel安装命令:curl -s https://laravel.build/example-app | bash
2. 修复fstab挂载问题
错误提示中提到Processing fstab with mount -a failed,需检查WSL的挂载配置:
- 进入WSL终端,编辑
/etc/fstab文件:nano /etc/fstab - 检查文件中的挂载项(尤其是Windows磁盘挂载,如
/mnt/c),注释掉存在错误的挂载行(在行首加#) - 执行
mount -a测试挂载是否正常,无报错后再尝试Laravel安装命令
3. 重置WSL发行版(终极方案)
若上述方法无效,可重置WSL发行版:
- 在CMD中执行:
wsl --unregister Ubuntu - 重新打开Ubuntu发行版,完成初始化设置
- 确保Docker开启对应WSL发行版的集成(Docker设置 -> Resources -> WSL Integration)
- 再次尝试执行Laravel安装命令
内容的提问来源于stack exchange,提问作者Dade Staples
相关产品推荐
相关产品推荐

