Netbeans 等待连接 XDEBUG。

8

Netbeans无法连接xdebug。我尝试了以下帖子中的建议:

调试IDE端口连接到XDebug:“等待连接”

netbeans显示“等待连接(netbeans-xdebug)”

但这并没有解决我的问题。

看起来Netbeans连接到了xdebug,因为当它等待连接时,所有发往Web服务器[Apache2]的请求都被阻止了。此外,端口[9001]似乎正在使用中:

roxy@Pixy011 ~ $ sudo nmap -sS -O 127.0.0.1

Starting Nmap 6.00 ( http://nmap.org ) at 2013-11-28 20:48 EST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000029s latency).
Not shown: 990 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
139/tcp  open  netbios-ssn
443/tcp  open  https
445/tcp  open  microsoft-ds
631/tcp  open  ipp
902/tcp  open  iss-realsecure
3306/tcp open  mysql
8080/tcp open  http-proxy
8081/tcp open  blackice-icecap
9001/tcp open  tor-orport   <---- Opened by java

xdebug.ini:[我已确认它在phpinfo中被加载]

zend_extension=/usr/lib/php5/20100525/xdebug.so

xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_mode="req"
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9001
xdebug.idekey="netbeans-xdebug"

Netbeans配置:
Debugger port: 9001
Session ID: netbeans-xdebug
Stop at first line: Checked
All other options are unchecked

项目属性:
Host: 127.0.0.1
Port: 9001

编辑: 我注意到Netbeans没有将XDEBUG_SESSION_STOP附加到URL中。我认为这与问题无关,因为只有在关闭调试会话后,Netbeans才会打开页面。
我还禁用了SELinux。

1
我花了一点时间来调试,最终发现问题是当Netbeans启动xdebug时,它会转到HTTP://LOCALHOST?XDEBUG_SESSION_START=netbeans-xdebug,并且有一个htaccess文件干扰了重定向。所以将主机更改为HTTP://LOCALHOST/index.php可以使其工作。所以HTTP://LOCALHOST/index.php?XDEBUG_SESSION_START=netbeans-xdebug - ToughPal
对我来说,我不知道我必须在三个位置指定端口= 9000,而不匹配导致“等待连接(netbeans-xdebug)”:https://dev59.com/1WMm5IYBdhLWcg3wbunb#41768167 - Ryan
7个回答

28
在Ubuntu 13.04 64位php 5.4.9-4 Xdebug v2.2.3 netbeans 7.4上,我遇到了同样的问题,并通过以下方式解决:
1. 访问http://xdebug.org/wizard.php ,按照说明编译自己的xdebug.so文件。
2. 在netbean 7.4中的常规选项中(抱歉,我没有10个声望来发布图片),测试连接。确保代理设置正确:对我来说,“无代理”可行。
3. 在php选项调试选项卡中,将xdebug设置端口更改为除9001或9000之外的其他端口。我选择了9002,但您可以尝试直到找到空闲端口(如果端口不免费,nb会告诉您)
4. 在php.ini对于ubuntu用户在/etc/php5/conf.d/20-xdebug.ini中。
zend_extension=/usr/lib/php5/20100525/xdebug.so # 在此处放置重新编译的xdebug.so文件 [xdebug] xdebug.remote_autostart=0 xdebug.remote_enable=1 xdebug.remote_handler="dbgp" xdebug.remote_mode="req" xdebug.remote_port=9002 # 你在netbeans中找到并设置的空闲端口号 xdebug.remote_host=127.0.0.1 xdebug.profiler_enable=0 xdebug.profiler_output_dir="/tmp/" xdebug.idekey="netbeans-xdebug" xdebug.remote_log="/home/#user_name#/xdebug.log" # 你的用户名
5. sudo service apache2 restart
这样做后,我可以再次调试PHP。

1
谢谢Leonardo。我跳过了1(想知道是否可以避免这种情况),它起作用了。回去逐个测试每个更改,似乎只有端口阻止了连接。 - Pixy
我已经尝试并使用了xdebug 2.2.1,所以您可以通过apt-get install php5-xdebug来查看它,但是步骤1非常简单,因此您可以使用最新的xdebug。 - user2053904
我之前在电脑上安装了nb 7.4,安装后发现代理默认系统的先前设置对于xdebug不再适用:我必须选择“无代理”!端口号的更改是强制性的。我进行了相同的测试以查找端口9001是否可用,但它们失败了。因此,在我看来,最好尝试端口直到成功为止 :-) - user2053904
对于后来的任何人来说,我正在使用WAMP和它们的默认PHP.ini文件。为了使NetBeans正常工作,我只需要进行以下更改: xdebug.remote_enable = on - BillyNair
xdebug.remote_enable=on xdebug.remote_host=localhost - Confused

1
在Windows 10上,使用Netbeans 8.0运行Netbeans内置的Web服务器时,我发现在php.ini文件中设置以下选项可以解决问题:
zend_extension ='C:\path to php installation\ext\php_xdebug-2.5.0-5.6-vc11.dll' xdebug.remote_enable=on
对于我来说,这个问题似乎是通过使用完整的.dll文件路径解决的。另外,因为我的路径名中有空格,所以我必须用引号将路径括起来(双引号和单引号似乎没有区别)。此外,我还必须设置xdebug.remote_enable选项。一旦我设置了这两个选项,我就能在Netbeans中选择“调试应用程序”选项,并启动调试器。

2
由于这是一个常见问题,我认为您应该查看如何撰写好的答案。请添加一些参考资料并扩展您的解释。 - Quintin Balsdon

1

1
我遇到了类似的问题,在我的情况下,我最近更新了php版本,并且xdebug配置只在php5文件夹中。只需将旧的xdebug配置复制到新版本的php.ini文件中,就像以前一样工作。
调试此问题的一些提示:
1.首先检查是否安装了xdebug,请运行(php-v),如果xdebug详细信息不存在,则安装并添加配置。
2.在xdebug类别下打开phpinfo(),检查是否加载了xdebug配置。检查以下设置。
- remote_enable = on,remote_handler = dbgp

1

我在使用VirtualBox Ubuntu虚拟机与Netbeans时遇到了同样的问题,无法使xdebug工作。

PHP版本为7.4

修改了以下文件

"/etc/php/7.4/apache2/conf.d/20-xdebug.ini"

并添加了以下行:

zend_extension="/usr/lib/php/20190902/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_log = "/var/log/xdebug.log"

请注意,下面的行包含用于定义路径的双引号。
zend_extension="/usr/lib/php/20190902/xdebug.so"

0

遇到了同样的问题:

$ netstat | grep 9000
...
tcp6       1      0 localhost:9000          localhost:37486         CLOSE_WAIT

解决方案:重新启动NetBeans。 有一个已经停止的进程在等待连接。
这里是带有运行调试会话的NetBeans。请注意CLOSE_WAITTIME_WAIT
tcp6       0      0 localhost:9000          localhost:38166         TIME_WAIT 

这正是我遇到的同样问题。经过几次尝试后,连接总是断开了。唯一的解决方法就是重新启动nb。我在寻找其他的解决方案。如果你发现了任何解决方法,请务必告诉我。 - Sangoku

0

针对 Xdebug v>=3

如果您尝试了以上所有答案仍然存在问题,并且您正在使用Xdebug版本>=3,则可以尝试我的步骤。

v3中更改了一些设置。

  1. Xdebug的默认调试端口已从9000更改为9003。因此请在php.ini和netbeans IDE中进行更改。
  2. 在php.ini中
  • 添加 xdebug.start_with_request="yes"

  • 添加 xdebug.client_host = localhost。(v3中旧的xdebug.remote_host=localhost已不再有用)

  • 添加 xdebug.mode=debug


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接