【发布时间】:2020-09-30 15:52:19
【问题描述】:
我有一个 Docker 环境正在运行。
为了让 Xdebug 运行,我按照此页面中的步骤操作: https://devdocs.magento.com/cloud/docker/docker-development-debug.html
当我尝试打开“开始侦听 PHP 调试连接”时,出现错误:
无法开始侦听来自“xdebug”的连接:端口 9001 正忙
有人知道如何使用 Xdebug 在 docker 中正确设置 Magento 吗?
编辑: 整个环境是这样的:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19d92752c73a magento/magento-cloud-docker-tls:latest-1.1 "/entrypoint.sh" 4 seconds ago Up 3 seconds 0.0.0.0:443->443/tcp mymagento_tls_1
b71dd39b46c3 magento/magento-cloud-docker-nginx:latest-1.1 "/docker-entrypoint.…" 4 seconds ago Up 4 seconds (health: starting) 0.0.0.0:80->80/tcp, 443/tcp mymagento_web_1
311e04f363b3 magento/magento-cloud-docker-php:7.3-fpm-1.1 "/docker-entrypoint.…" 5 seconds ago Up 4 seconds (health: starting) 9000/tcp mymagento_fpm_1
cbdf9246f3e9 magento/magento-cloud-docker-php:7.3-fpm-1.1 "/docker-entrypoint.…" 35 seconds ago Up 33 seconds (healthy) 9000/tcp, 0.0.0.0:9001->9001/tcp mymagento_fpm_xdebug_1
2f1b4f2f9e23 magento/magento-cloud-docker-elasticsearch:6.5-1.1 "/usr/local/bin/dock…" 36 seconds ago Up 35 seconds (healthy) 9200/tcp, 9300/tcp mymagento_elasticsearch_1
d818c0755f4c mariadb:10.2 "docker-entrypoint.s…" 36 seconds ago Up 35 seconds (healthy) 0.0.0.0:32807->3306/tcp mymagento_db_1
19e266fbb72a redis:5.0 "docker-entrypoint.s…" 36 seconds ago Up 35 seconds (healthy) 0.0.0.0:32806->6379/tcp mymagento_redis_1
【问题讨论】:
-
当您引用的链接明确使用 9002 进行 Xdebug 时,为什么还要使用 9001 进行 Xdebug? 9001 我在那里使用了一些 php-fpm 通信(虽然不确定需要什么——也许是为了让 Web 服务器与 php-fpm 通信......)
-
如果您使用
netstat或类似的收费,可以显示哪些程序正在侦听哪些端口.. 9001 将已经被占用,很可能被 Docker 占用(根据ports: - '9001:9001'部分)。对我来说,9001 在这里很忙也就不足为奇了......如果9001:9001部分是针对 Xdebug 的......那么它就是错误/不必要的。 -
在这种情况下,为 Xdebug 指定 9001 并同时在 Docker 文件中包含
ports: - '9001:9001'是错误的。9001:9001告诉:在容器外部(大多数情况下是主机操作系统),在第一个端口 (9001) 上侦听传入连接,并将它们在容器内转发到第二个端口(也是 9001)。这意味着 Docker 必须使用第一个 9001。而且因为它已经被 Docker 使用了,所以 PhpStorm 无法在那里监听。 -
或者只使用 9002 端口(或任何其他空闲端口)进行 Xdebug 通信:在 php.ini 中的 PhpStorm 和 Docker/Xdebug 配置上(或者你如何为这个图像传递 Xdebug 配置)
-
当然,你可以同时做 .. 但是如果你去掉 9001:9001 部分... 那么 PhpStorm 将能够在 9001 端口上监听传入的 Xdebug 连接,并且不需要将其更改为使用 9002(或任何其他数字)。
标签: docker phpstorm magento2 xdebug