如何解决连接到远程 Docker 镜像上的 XDEBUG
我正在尝试使用 NetBeans 11 作为我的客户端进行调试,Docker 映像上的 Xdebug 3。 Docker 容器位于远程主机上。我无法建立连接。 NetBeans 屏幕底部的指示器将永远滚动并显示“等待连接 (netbeans-xdebug)”。我不确定我做错了什么。我过去在没有 Docker 和 Xdebug 2 的情况下做过这项工作,我不确定我是否搞砸了 Xdebug 3、Docker 或两者。
我的配置:
Dockerfile 正确添加了 Xdebug,我可以在我的容器中看到它。
docker-compose.yml
---
services:
drupal:
container_name: intranet-finkenb2
ports:
- "8082:80"
- "9092:9003"
volumes:
- /home/finkenb2/intranet/custom_themes:/opt/drupal/web/themes/custom
- /home/finkenb2/intranet/custom_modules:/opt/drupal/web/modules/custom
environment:
XDEBUG_MODE: debug,develop
XDEBUG_SESSION: netbeans-xdebug
XDEBUG_CONfig: >
client_host = localhost
client_port = 9003
discover_client_host=true
start_with_request=yes
db:
container_name: intranet-finkenb2-db
solr:
container_name: intranet-finkenb2-solr
ports:
- "8982:8983"
volumes:
public_files:
private_files:
site_settings:
通过 PuTTY 的 SSH 隧道:R9092 localhost:9092
NetBeans PHP 调试配置:
- Debugger Port: 9092
- Session ID: netbeans-xdebug
- Maximum Data Length: 8192
- Check: Stop at first line
NetBeans 项目配置(运行配置):
- Run As: Remote Web Site
- Project URL: http://intranet-finkenb2.devel.lib.msu.edu
- index file: index.PHP
- remote connection
- hostname intranet8.devel.lib.msu.edu /*docker host server*/
- user/pwd correct
- initial directory /var/www/
解决方法
这是不正确的:
ports
- "9092:9003"
Xdebug 将连接到您的 IDE,因此您无需公开端口。这些端口无论如何都是用于外部暴露的,而且您已经使用 -R SSH 连接到容器中,所以这是没有意义的。
这是不正确的:
XDEBUG_CONFIG: >
client_host = localhost
client_port = 9003
discover_client_host=true
start_with_request=yes
- 例如,您不能将所有这些都用作
XDEBUG_CONFIG
variable、start_with_request
的一部分。 -
discover_client_host
与 Docker 不起作用,因为它通过网关获取了错误的 IP -
localhost
通常也不正确,因为它需要是 IDE 侦听的机器的 IP/主机名。但是您正在通过 SSH 连接到该容器,所以应该没问题。 - 使用该 SSH 隧道,您需要将
client_port
设置为远程 SSH 端点 (9092) 的端口。
如果还有什么不清楚的,制作一个日志文件,或者尝试调试一个包含 xdebug_info()
的页面,它会告诉你 Xdebug 尝试了什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。