You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2+VSCode+Laravel Sail环境下Xdebug调试连接失败求助

排查Laravel Sail + WSL2 + VSCode Xdebug断点无法触发问题

以下是针对你的环境(Windows+VSCode远程WSL2+Laravel Sail+PHP8.2)的逐步排查方案:

1. 修正Xdebug的客户端主机配置

容器内的localhost指向容器自身,无法访问到WSL2主机上的VSCode调试监听,这是核心问题。解决方法:

  • 在WSL2终端中获取当前WSL2的IP地址:

    hostname -I | awk '{print $1}'
    
  • 在项目根目录的.env文件中添加(或修改)以下配置:

    SAIL_XDEBUG_CLIENT_HOST=你的WSL2_IP地址
    SAIL_XDEBUG_MODE=develop,debug
    SAIL_XDEBUG_CLIENT_PORT=9003
    
  • 重启Sail容器使配置生效:

    sail down && sail up -d
    

    可选优化:若WSL2 IP经常变动,可尝试使用host.docker.internal作为SAIL_XDEBUG_CLIENT_HOST的值(Docker for WSL2已默认支持此域名指向WSL2主机)。

2. 确认VSCode调试监听状态

  • 确保已安装最新版的PHP Debug插件(Felix Becker开发的版本)。
  • 打开VSCode的「运行和调试」面板,选中你配置的Listen for Sail Xdebug配置,点击启动按钮(绿色三角),确认左下角显示「正在监听」状态。
  • 检查launch.json的pathMappings是否正确:你的配置中/var/www/html对应${workspaceFolder}是正确的(Sail默认将项目挂载到容器内的/var/www/html)。

3. 触发Xdebug调试会话

Postman请求需要携带Xdebug触发标识,否则Xdebug不会主动连接调试客户端:

  • 方法1:在请求URL后添加GET参数:?XDEBUG_SESSION_START=1
  • 方法2:在请求Headers中添加:X-Xdebug-Start: 1
  • 方法3:给请求添加Cookie:XDEBUG_SESSION=1

4. 验证Xdebug配置是否生效

进入Sail容器查看Xdebug实际配置:

sail shell
php -i | grep -A 20 "xdebug"

确认输出中以下参数符合预期:

  • xdebug.mode => develop,debug
  • xdebug.client_host => 你的WSL2_IP或host.docker.internal
  • xdebug.client_port => 9003

5. 排查端口占用与防火墙问题

  • 在WSL2终端中检查9003端口是否被占用:
    lsof -i :9003
    
    若有占用,杀掉对应进程或修改launch.json与.env中的端口号(需保持一致)。
  • 暂时关闭Windows防火墙测试,若能连接则需在防火墙中添加允许VSCode访问9003端口的规则。

内容的提问来源于stack exchange,提问作者benjamin.donze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:53:12