NetBeans XDEBUG远程主机无限期等待连接
我正在尝试将XDEBUG配置到我的NetBeans IDE,它显示为等待连接。我已经花了两天时间,但没有找到任何线索。
- 我正在使用SFTP连接从NetBeans IDE连接到远程服务器中的代码,连接成功。
- 我的远程服务器是安装了CENT OS 7的虚拟机。
- 我的应用程序配置了nginx、PHP-fpm、PHP 5.6。
我已经在服务器上安装了xdebug-2.5.5,并在php.ini中添加了以下内容:
zend_extension=/apps/php-fpm/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_mode="req"
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey="netbeans-xdebug"
;xdebug.remote_connect_back=1
xdebug.profiler_enable_trigger=0
xdebug.remote_log="/mypath/xdebug.log"
我已交叉检查xdebug.so
位于我上面提到的正确路径中。
在我的NetBeans中,工具>;>;选项>;>;PHP&>;>;调试:
Debugging port: 9000
Session ID: netbeans-xdebug
在NetBeans IDE中开始调试时,我看到以下日志:
Log opened at 2021-11-24 07:11:45
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///myserver/location/path/index.php" language="PHP" xdebug:language_version="5.6.14" protocol_version="1.0" appid="4643" idekey="netbeans-xdebug"><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="break" reason="ok"><xdebug:message filename="file:///myserver/location/path/index.php" lineno="13"></xdebug:message></response>
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
Log closed at 2021-11-24 07:11:45
并且在NetBeans IDE中,等待连接的";将无限期地保持加载。
我正在寻找一些帮助,以了解这上面有什么问题。我没有使用任何Docker和PhpStorm。期待得到一些帮助。
解决方案
您说&我的远程服务器是一台安装了CENT OS 7的虚拟机,但您有xdebug.remote_host=localhost
xdebug.remote_host
应指向运行您的IDE的计算机(可以解析为该IP的IP地址或域名;从该服务器可以看到)。当然,除非您正在对Xdebug连接使用反向SSH隧道。现在,您正在通过TCP9000端口连接到服务器上的某些服务。它极有可能是php-fpm(它也使用该端口:这是XDebugv3将默认端口更改为9003BTW的原因之一)。您的XDEBUG日志非常短:知道XDEBUG如何工作的服务的典型响应就是关闭会话。Php-fpm就可以做到这一点。
所以有几点建议:
要确保只有XDEBUG使用此端口:在php.ini和NetBeans中将XDEBUG端口更改为另一个数字(例如
9001
或更好的9003
,以便它将与XDEBUG v3兼容)。之后不要忘记重新启动您的Web服务器/php-fpm(使用phpinfo();
检查实时设置)。如果未使用反向SSH隧道,则将
注意:由于这将是一个传入连接,因此您的本地操作系统、服务器和路由器(如果它位于您的局域网之外)上的防火墙可以阻止此类连接。因此,您需要确保可以在本地计算机上的XDEBUG端口上接收传入连接。xdebug.remote_host
设置为拥有包含NetBeans的机器的IP。通常,该IP与$_SERVER['REMOTE_HOST']
中看到的IP相同。
相关文章