【发布时间】:2022-08-20 00:16:40
【问题描述】:
我将本地开发设置从 Linux 移植到新的 Mac 机器上,但在让 Xdebug 与 Mac M1 Pro 机器上的 PhpStorm 一起工作时遇到了问题。
我有一个装有 PHP 的容器,其中安装和配置了 Xdebug,如下所示:
zend_extension=/usr/lib/php8/modules/xdebug.so
xdebug.mode=debug
xdebug.idekey=PHPSTORM
xdebug.client_port=9001
xdebug.start_with_request=yes
xdebug.discover_client_host=1
xdebug.log=/var/log/xdebug.log
在 PhpStorm 中,我正在监听端口 9001(我将 9000 用于其他服务)。
这是 docker 容器中的 Xdebug 日志,地址为/var/log/xdebug.log
/var/www/html/app # tail -f /var/log/xdebug.log
[49] [Step Debug] INFO: Checking header \'HTTP_X_FORWARDED_FOR\'.
[49] [Step Debug] INFO: Checking header \'REMOTE_ADDR\'.
[49] [Step Debug] INFO: Client host discovered through HTTP header, connecting to 172.18.0.4:9001.
[49] [Step Debug] WARN: Creating socket for \'172.18.0.4:9001\', poll success, but error: Operation in progress (29).
[49] [Step Debug] WARN: Could not connect to client host discovered through HTTP headers, connecting to configured address/port: localhost:9001. :-|
[49] [Step Debug] WARN: Creating socket for \'localhost:9001\', poll success, but error: Operation in progress (29).
[49] [Step Debug] WARN: Creating socket for \'localhost:9001\', connect: Address not available.
[49] [Step Debug] ERR: Could not connect to debugging client. Tried: 172.18.0.4:9001 (from REMOTE_ADDR HTTP header), localhost:9001 (fallback through xdebug.client_host/xdebug.client_port) :-(
[49] Log closed at 2022-03-15 16:28:46.957669
我不明白为什么连接没有发生/失败。
我还有一个docker-compose.yml 文件,上面的服务API 为
api:
build:
context: .
expose:
- 8080
container_name: api
我已经尝试了什么?
- 将 xdebug.ini 配置更改为使用远程主机
docker.for.mac.localhost,然后是host.docker.internal,但没有成功。 - 已更改
start_with_request=trigger而不是yes。 - 禁用 Mac 防火墙,认为 Docker 可能无法使用端口 9001。
2022 年 8 月 19 日更新 - 这不适用于调试 cli 脚本(phpunit 测试)
/etc/php8/conf.d/50_xdebug.ini的内容zend_extension=/usr/lib/php8/modules/xdebug.so xdebug.mode=debug xdebug.idekey=PHPSTORM xdebug.client_port=9001 xdebug.start_with_request=yes xdebug.discover_client_host=0 xdebug.client_host=host.docker.internal xdebug.log=/var/log/xdebug.log ``
-
xdebug.discover_client_host=1肯定不正确,您需要将其设置为0。设置xdebug.client_host=host.docker.internal应该是正确的,尝试使用它并显示日志。 -
@Derick 成功了!谢谢你。正如我之前在帖子中提到的,我只尝试设置 xdebug.client_host=host.docker.internal 并评论发现客户端主机。现在我明确设置 discover_client_host=0 并工作。怎么来的?您可以回答我选择作为答案,并请一些解释。我认为这个问题可能是我没有在 docker-compose.yaml 中绑定端口,打算尝试下一个端口:- 9001:9001
标签: docker macos phpstorm xdebug