Php 远程服务器上Docker内部的Xdebug远程调试
我需要调试远程服务器上Docker容器中的PHP脚本 通常,我在Windows中使用Visual Studio代码调试代码。我一直在以这种方式调试我的开发代码(它位于一个流浪汉中),没有任何问题 但当涉及到调试远程服务器上Docker中的文件时,我无法让它工作 下面是我在php.ini上的xdebug设置(位于远程服务器上的docker中) 上述设置中的Php 远程服务器上Docker内部的Xdebug远程调试,php,docker,server,xdebug,ssh-tunnel,Php,Docker,Server,Xdebug,Ssh Tunnel,我需要调试远程服务器上Docker容器中的PHP脚本 通常,我在Windows中使用Visual Studio代码调试代码。我一直在以这种方式调试我的开发代码(它位于一个流浪汉中),没有任何问题 但当涉及到调试远程服务器上Docker中的文件时,我无法让它工作 下面是我在php.ini上的xdebug设置(位于远程服务器上的docker中) 上述设置中的远程\u主机IP地址是从Docker内部看到的远程主机的IP 我尝试了ssh隧道到我的远程服务器(从Windows,使用telnet) 但是,当
远程\u主机
IP地址是从Docker内部看到的远程主机的IP
我尝试了ssh隧道到我的远程服务器(从Windows,使用telnet)
但是,当我尝试在浏览器上运行该站点时,我的Visual Studio代码无法检测到调试会话
基本上我所做的是:
ssh-R 9000:localhost:9000创建到远程服务器的ssh隧道(将服务器上的端口9000转发到localhost:9000)username@myremoteserver.com
/sbin/IP route | awk'/default/{print$3}'
/tmp/debug.log
包含以下内容:
I: Connecting to configured address/port: 172.18.0.1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///magento/test.php" language="PHP" xdebug:language_version="5.6.33-1+ubuntu16.04.1+deb.sury.org+1" protocol_version="1.0" appid="12776" idekey="www-data"><engine version="2.5.5"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2017 by Derick Rethans]]></copyright></init>
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
I:连接到配置的地址/端口:172.18.0.1:9000。
I:已连接到客户端。:-)
->
->
如何将Xdebug设置的连接从Docker“中继”到远程服务器,再到本地pc上的IDE?我无法通过ssh隧道实现同样的功能:( 但这是可能的。你应该:
ngrok
xdebug.remote\u端口
和xdebug.remote\u主机
不要使用标准的9000端口——最好选择9001或其他端口。现在,一些知道Xdebug是什么以及它是如何工作的服务正在响应Xdebug连接(根据您的日志),并简单地告诉Xdebug“走开”(通过说“在没有调试的情况下运行到最后”)。如果您使用了错误的IP地址,很可能是php fpm。另外,不知道
172.18.0.1
来自何方——对于SSH隧道,您应该真正使用127.0.0.1
.1)“docker中的Xdebug设置为侦听其主机”什么?RTM谢谢。Xdebug什么都不听。只是因为是Xdebug连接到IDE,而不是其他方式。。。2) IP地址必须是运行IDE/编辑器的PC的地址(如果您愿意并可以直接连接)。否则您需要SSH隧道。。。然后,您需要使用127.0.0.1,以便将连接从远程系统转发到您的开发人员PC。3)现在,您必须只连接到本地(远程)php fpm或一些类似的服务,这些服务支持Xdebug(知道它是如何工作的)。。正如它清楚地告诉Xdebug“走开”一样。1)RTM:2)它是针对PhpStorm的。。但也适用于VSCode(因为基础对于任何IDE/编辑器都是一样的):可能的重复
I: Connecting to configured address/port: 172.18.0.1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///magento/test.php" language="PHP" xdebug:language_version="5.6.33-1+ubuntu16.04.1+deb.sury.org+1" protocol_version="1.0" appid="12776" idekey="www-data"><engine version="2.5.5"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2017 by Derick Rethans]]></copyright></init>
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>