【发布时间】:2021-04-24 16:03:04
【问题描述】:
我们是一个在远程服务器上为不同项目使用 docker 堆栈的团队(比 Mac 性能更好)。这些堆栈有多种服务,例如 PHP(带有 Xdebug)、DBGp、ElasticSearch....
我已经解决了 2 周的问题,但无法解决。我无法在远程服务器上使用此堆栈进行调试(它在我的本地计算机上运行良好,但速度非常慢并且浪费了太多时间)。我认为 ssh 隧道做错了
这里有一些信息:
Xdebug 配置:
[xdebug]
xdebug.max_nesting_level=2048
xdebug.remote_enable=1
xdebug.remote_connect_back=0
xdebug.remote_port=9001
xdebug.remote_host=dbgp
xdebug.idekey=PHPSTORM
xdebug.remote_log="/var/www/html/public/xdebug.log"
Xdebug 日志:
[6] Log opened at 2021-01-20 09:00:21
[6] I: Connecting to configured address/port: dbgp:9001.
[6] I: Connected to client. :-)
[6] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/html/public/test.php" language="PHP" xdebug:language_version="7.3.20" protocol_version="1.0" appid="6" idekey="PHPSTORM"><engine version="2.9.6"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>
[6] <- proxyerror -i 1 -- VW5hYmxlIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBsaXN0ZW5lciA5Mi4xODQuMTAwLjIyNTo5
MDAxIFs8X19tYWluX18uc2Vzc2lvblByb3h5IGluc3RhbmNlIGF0IDB4N2Y5Y2VjZDFkNWYwPl0=
[6] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="proxyerror" transaction_id="1"><error code="4"><message><![CDATA[unimplemented command]]></message></error></response>
[6] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
[6] <- proxyerror -i 2 -- VW5hYmxlIHRvIGNvbm5lY3QgdG8gc2VydmVyIHdpdGgga2V5IFtQSFBTVE9STV0sIHN0b3BwaW5n
IHJlcXVlc3QgWzxfX21haW5fXy5zZXNzaW9uUHJveHkgaW5zdGFuY2UgYXQgMHg3ZjljZWNkMWQ1
ZjA+XQ==
[6] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="proxyerror" transaction_id="2"><error code="4"><message><![CDATA[unimplemented command]]></message></error></response>
[6] Log closed at 2021-01-20 09:00:52
来自 docker-compose.yml 的 DBGp 配置(使用 komodo-python-dbgp 启动 Dockerfile):
dbgp:
build:
context: './.docker/dbgp/'
ports:
- ${DBGP_PORT}:9002
DBGp 日志:
dbgp_1 | 2021-01-20T08:59:34.893975559Z INFO: dbgp.proxy: dbgp listener on 0.0.0.0:9001
dbgp_1 | 2021-01-20T08:59:34.893982748Z INFO: dbgp.proxy: IDE listener on 0.0.0.0:9002
dbgp_1 | 2021-01-20T09:00:01.496772798Z INFO: dbgp.proxy: Server:onConnect ('92.184.100.225', 43547) [proxyinit -p 9001 -k PHPSTORM -m 1]
dbgp_1 | 2021-01-20T09:00:21.203770947Z INFO: dbgp.proxy: connection from 192.168.192.9:57390 [<__main__.sessionProxy instance at 0x7f9cecd1d5f0>]
dbgp_1 | 2021-01-20T09:00:52.648803308Z ERROR: dbgp.proxy: Unable to connect to the server listener 92.184.100.225:9001 [<__main__.sessionProxy instance at 0x7f9cecd1d5f0>]
dbgp_1 | 2021-01-20T09:00:52.648853429Z Traceback (most recent call last):
dbgp_1 | 2021-01-20T09:00:52.648864741Z File "/usr/bin/pydbgpproxy", line 220, in startServer
dbgp_1 | 2021-01-20T09:00:52.648874088Z self._server.connect((self._serverAddr[0], self._serverAddr[1]))
dbgp_1 | 2021-01-20T09:00:52.648882211Z File "/usr/lib/python2.7/socket.py", line 228, in meth
dbgp_1 | 2021-01-20T09:00:52.648890343Z return getattr(self._sock,name)(*args)
dbgp_1 | 2021-01-20T09:00:52.648898305Z error: [Errno 110] Operation timed out
dbgp_1 | 2021-01-20T09:00:52.649270051Z WARNING: dbgp.proxy: Unable to connect to server with key [PHPSTORM], stopping request [<__main__.sessionProxy instance at 0x7f9cecd1d5f0>]
dbgp_1 | 2021-01-20T09:00:52.649739684Z INFO: dbgp.proxy: session stopped
我用来重定向到本地的 SSH 命令:
ssh -R 9001:127.0.0.1:25115 user@server
与:
- 9001 是 PhpStorm 正在监听的本地端口
- 25115 是 DBGp 的公共远程端口重定向到 9002(DBGp 中的 IDE 侦听器)
我也试过把 127.0.0.1 改成应用的 docker 网关地址,但还是不行。
我在 PhpStorm 的 Tools > DBGp Proxy > Register IDE 中注册了我的 IDE。
当我在我的应用程序上加载一个 php 页面时,它只加载 30 秒并显示我放在顶部的日志。
我做错了什么,有人可以帮助我吗? ????
【问题讨论】:
-
以防万一:当 Xdebug 连接到 DBGp 代理时,它会依次连接到您的 IDE。它能够做到吗?检查此 PhpStorm 论坛主题:intellij-support.jetbrains.com/hc/en-us/community/posts/…
-
我认为从远程 DBGp 连接到本地 IDE 是问题所在,对吧?我尝试了很多事情,也注意到我的 ssh 命令是错误的:我将
ssh -R 9001:127.0.0.1:25115 user@server更改为ssh -R 25115:127.0.0.1:9001 user@server但仍然无法正常工作 -
我从来不需要使用 DBGp 代理(或容器内的反向 SSH 隧道),因此无法在这里提供帮助。顺便说一句:@ 987654322@ - 这是SO上的原始问题(与我之前给你的链接相同的人)。尝试在那里发表评论,也许有人能给你一些提示。您也可以在 PhpStorm 论坛上创建自己的主题,以便 PhpStorm 支持团队可以提供帮助(不要劫持现有主题,因为您的情况不同,但您可以在那里评论“请查看我的主题/给我一些建议”)。
标签: php docker phpstorm xdebug remote-debugging