我正在尝试将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中,工具>gt;选项>gt;PHP>gt;调试:
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是连接到IDE的,而不是其他方式。如果您的代码在另一台服务器上运行(另一台物理机器或VM或某个容器内(,则xdebug.remote_host
应指向运行IDE的机器(可以解析为该IP的IP地址或域名;从该服务器上可以看到(当然,除非您使用反向SSH隧道进行Xdebug连接
现在,您正在TCP 9000端口上连接到服务器上的某个服务。它很可能是php-fpm(也使用该端口:这也是Xdebug v3将默认端口更改为9003 BTW的原因之一(。您的Xdebug日志很短:一个知道Xdebug如何工作的服务的典型响应,只关闭会话。php-fpm可以做到这一点。
所以有几个建议:
-
为了确保只有Xdebug在使用这个端口:在php.ini和NetBeans中,将Xdebug端口更改为另一个数字(例如
9001
或更好的9003
,这样它将与Xdebug v3兼容(。之后不要忘记重新启动您的web服务器/php-fpm(使用phpinfo();
检查实时设置(。 -
如果没有使用反向SSH隧道,则将
xdebug.remote_host
设置为具有带有NetBeans的机器的IP。这通常与$_SERVER['REMOTE_HOST']
中看到的IP相同。注意:由于这将是一个传入连接,因此本地操作系统、服务器和路由器(如果在LAN之外(上的防火墙可以阻止这种连接。因此,您需要确保您可以在本地机器的Xdebug端口上接收传入连接。