0

我正在尝试使用 NetBeans 11 作为我的客户端、Docker 映像上的 Xdebug 3 进行调试。Docker 容器位于远程主机上。我无法建立联系。NetBeans 屏幕底部的指示器永远滚动,并显示“等待连接 (netbeans-xdebug)”。我不确定我做错了什么。我过去在没有 Docker 和 Xdebug 2 的情况下做过这项工作,我不确定我是搞砸了 Xdebug 3、Docker 还是两者兼而有之。

我的配置:

Dockerfile 正确添加了 Xdebug,我可以在我的容器中看到它。

码头工人-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/
4

1 回答 1

1

这是不正确的:

ports
- "9092:9003"

Xdebug 连接你的 IDE,所以你不需要暴露端口。这些端口无论如何都是用于外部暴露的,并且您已经使用 -R SSH 进入容器,所以这没有任何意义。

这是不正确的:

  XDEBUG_CONFIG: >
    client_host = localhost
    client_port = 9003
    discover_client_host=true
    start_with_request=yes
  1. 例如,您不能将所有这些用作XDEBUG_CONFIG变量,start_with_request的一部分。
  2. discover_client_host使用 Docker 不起作用,因为它通过网关获取了错误的 IP
  3. localhost通常也不正确,因为它需要是 IDE 侦听的机器的 IP/主机名。但是您正在通过 SSH 连接到该容器,所以应该没问题。
  4. 使用该 SSH 隧道,您需要设置client_port为远程 SSH 端点的端口 (9092)。

如果还有什么不清楚的,请创建一个日志文件,或者尝试调试其中包含的页面xdebug_info(),它会告诉您 Xdebug 尝试了什么。

于 2021-05-24T13:03:33.297 回答