【发布时间】:2021-11-02 22:29:30
【问题描述】:
我有 Ubuntu 18.04 和全新安装的 Laravel 8。我想将 Xdebug 与 Sail 一起使用。我按照instructions如下:
- 将
SAIL_XDEBUG_MODE=develop,debug添加到环境中 - 运行
sail build --no-cache和sail up -d - 运行
docker inspect -f {{range.NetworkSettings.Networks}}{{.Gateway}}{{end}} <container-name>以获取我的 docker 容器的 IP - 已将
SAIL_XDEBUG_CONFIG="client_host=172.19.2.1"添加到 env(来自步骤 3 的 IP)
接下来我继续instruction from PhpStorm for debugging:
- 已通过
sail php -v验证 Xdebug 处于活动状态。 - 在 PhpStorm 中启用侦听调试连接
- 设置断点并启用
Break at first line in PHP scripts - 为 Chrome 安装了 Xdebug Helper 浏览器扩展
- 单击扩展中的调试(错误现在为绿色)
- 刷新页面,页面构建速度很慢,但完全加载(不应该是这种情况,它应该挂在断点上)
如果我切换到 PhpStorm,则不会弹出对话框。不过按照说明,应该有一些说明。
在浏览器中重新加载页面并返回 PhpStorm。在传入 Connection From 对话框,选择路径映射,以便 PhpStorm 可以将 web 服务器上的远程文件映射到本地 项目中的文件。
我错过了什么?
【问题讨论】:
-
1) 我建议启用 Xdebug 日志并尝试调试。然后检查日志——它必须说什么(如果它试图调试;如果它尝试那么它试图连接到哪里) 2)检查/显示你的实时 Xdebug 配置(
xdebug_info()输出......或phpinfo()的 Xdebug 部分)——查看在实际执行期间实际设置了哪些选项。 -
一般情况下:如果 PhpStorm 中没有弹出对话框 .. 并且调试服务器条目尚未创建 .. 那么它可能是:1)PhpStorm 没有监听/不在正确的端口上(使用
netstat或类似工具检查)。 2) 错误的 IP:端口 3) 可能的防火墙问题...我自己没有使用 Sail:你能打开 SSH 会话吗?如果可以 -- 尝试将传出 telnet 连接回 IDE(在 Xdebug 端口上;当 IDE 正在侦听时) -- 看看 telnet 是否能够连接)。 -
@LazyOne 感谢您的建议。我尝试将日志路径设置为 docker 容器中的路径并授予文件 777 权限,但我得到了这个:
Xdebug: [Log Files] File '/www/var/html/storage/logs/debug.log' could not be opened.。我通过使用sail debug migrate触发了这个,这是一种通过命令行启动xdebug 的方法。然后我看到了,我的ip是错误的。每次我重新启动容器时,IP (X) 都会增加172.19.X.1。所以我现在做的是,我最后一个ip是172.19.5.1,所以我只是在env t`172.19.6.1中更改了ip并重启了容器。现在可以了。 -
但我想肯定有更好的方法,然后必须在每次重新启动容器时猜测 IP?
-
好吧...试试这个(通常适用于 Linux 上的 Docker):使用
host.docker.internal而不是特定的 IP,并在您的撰写文件中使用extra_hosts应用解决方法——检查 github.com/docker/for-linux/issues/264#issuecomment-759737542 和其他 cmets。
标签: laravel ubuntu phpstorm xdebug laravel-sail