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


70

需要帮助配置xdebug,以便从IDE netbeans调试项目。

这些是我组件的功能:

XAMPP 1.8.2

的PHP:5.4.16

netbeans:7.3.1

Apache:2.4.4(Win32)

这是我的php.ini文件的最后一部分:

 [XDebug]
 zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9-nts.dll"
 ;xdebug.profiler_append = 0
 ;xdebug.profiler_enable = 1
 ;xdebug.profiler_enable_trigger = 0
 xdebug.profiler_output_dir = "C:\xampp\tmp"
 ;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
 xdebug.remote_enable = 1
 xdebug.remote_handler = "dbgp"
 xdebug.remote_host = "127.0.0.1"
 ;xdebug.trace_output_dir = "C:\xampp\tmp"

当我运行phpinfo()时,没有安装xdebug,并且当我从netbeans调试项目时,它显示“正在等待连接(netbeans-xdebug)”。

有人可以帮助我进行配置吗?将不胜感激。

提前致谢。


PHP错误日志中是否有任何错误?还是Apache日志?好像PHP尚未注册扩展名,这就是Netbeans无法连接的原因。
2013年

您好,感谢您的回复。如何在NetBeans中注册扩展?
pasluc74669

当我运行phpinfo()时,它表明没有安装xdebub ..为什么?
pasluc74669

PHP日志或Apache日志中是否有任何错误?他们应该帮助诊断为什么未在PHP中注册xdebug。
2013年

2
我花了一些时间来调试它,最后发现问题是,当netbeans启动xdebug时,它转到HTTP:// LOCALHOST?XDEBUG_SESSION_START = netbeans-xdebug,并且有一个htaccess与重定向有关。因此,将主机更改为HTTP://LOCALHOST/index.php可以使其正常运行。所以HTTP://LOCALHOST/index.php?XDEBUG_SESSION_START = netbeans-xdebug
ToughPal 2014年

Answers:


118

你纠正了这个问题吗?如果没有,请尝试此操作。

1.)php.ini文件内容

[xDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9.dll"
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
;xdebug.remote_host="localhost:81"
xdebug.remote_host=192.168.1.5
;xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_mode=req
xdebug.idekey="netbeans-xdebug"

xdebug.remote_host=192.168.1.5-这是我系统的IPv4地址,我改成了这个,因为我无法使用localhost和进行调试127.0.0.1

在NetBeans IDE中,打开Tools-> Options -> PHP -> Debugging。调试器端口和会话ID的值应与中指定的端口和idekey相匹配php.ini

现在保存php.ini,重新启动Apache并尝试调试。

谢谢约翰逊


2
非常有用的答案!我搜索了3个小时。“ xdebug.remote_host = 192.168.1.5-这是我系统的IPv4地址,我更改为该地址,因为无法使用本地主机和127.0.0.1进行调试。” 是解决方案。我使用Win 7 Prof.
Neffets

3
xdebug.remote_host = 127.0.0.1
Theramax,2014年

3
这种配置很棒。我注释掉了ip地址的更改,只是将其保留为localhost,效果很好。我想我只需要idekey设置。
Metropolis

6
我必须重新启动Netbeans才能使该解决方案起作用。
杰罗姆Verstrynge

1
@JérômeVerstrynge哈哈,我过得很愉快。我花了一个小时来搜索问题。但是唯一有用的是重新启动NetBeans。谢谢!!!!!!!!
姆拉登

11

当Netbeans启动调试会话时,它将启动两个侦听器,一个在0.0.0.0:9000(系统具有的所有IPv4 IP)上,另一个在IPv6接口上。

如果Netbeans和Web Server在同一系统上,则理想情况下,将XDebug配置为将数据发送回127.0.0.1:9000,NetBeans将在该数据上侦听(并且仅按会话)。

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0

如果出于某种原因XDebug无法向其报告127.0.0.1,或者Netbeans没有在监听127.0.0.1,则可以配置XDebug将数据发送回给$_SERVER['REMOTE_ADDR']原始请求。

xdebug.remote_connect_back=1

这样,您不必指定确切的IP(即,如上述回答LAN IP: 192.168.1.5)。缺点是任何源都可以连接。

如果您还有其他麻烦,这...

xdebug.remote_autostart=1

...还将启动所有设备的调试过程请求,而不仅仅是具有正确会话开始查询或cookie的请求。缺点是所有请求都将启动调试数据收集并向后报告(使一切变慢,并生成更多数据)。

尽管从我的观点来看,Windows(使用XAMPP,Wamp-Server等)上的大多数“等待连接(netbeans-xdebug)”问题通常是Windows防火墙和McAfee(或其他防火墙和-病毒软件)阻止了连接...

来源:Netbeans“等待连接(netbeans-xdebug)”问题


使用“ xdebug.remote_connect_back = 1”无法为我解决问题。
Jaime Montoya

如果仍有问题,请检查正在侦听的端口。对我而言,碰巧的是Netbeans尽管被设置为收听9000,但事实并非如此。结果表明,它在听另一首歌-但是在收起后-并没有停止。更改netbeans调试器端口设置和xdebug.remote_port以获得闪亮的新效果:)
Jacek Dziurdzikowski

6

我是.Net程序员,对PHP还是很陌生。最近,我试图在我的计算机(Windows)上托管一个开源PHP应用程序。奋斗5-6天后,我将列出对我有用的步骤。

我卸载了以前安装的XAMPP和NetBeans的所有内容,然后进行了全新的安装。

这可能不是每个人的解决方案,但对我有用,我希望它对某人有所帮助。

  1. 安装XAMPP

  2. 为PHP安装netbeans。

  3. 打开IIS并停止它。默认情况下,它在端口80上运行。(我在端口80上运行XAMPP,即默认情况下,在其他端口上运行可能需要其他配置设置)

  4. 打开XAMPP控制面板并启动Apache。如果端口80空闲,则不会出现问题。

  5. 在浏览器中打开localhost时应显示XAMPP主页。

  6. 打开phpinfo()左侧窗格上的链接,然后复制页面上的所有内容。转到:http : //xdebug.org/wizard.php并将所有内容粘贴到TextBox中,然后单击“分析我的phpinfo输出”。它将显示适合您配置的Xdebug文件。

  7. 下载给定的Xdebug dll并复制到其中C:\xampp\php\ext(Xampp是默认的Xampp安装目录)

  8. 转到XAMPP控制面板,单击Apache前面的Config按钮,然后选择php.in

  9. 查找相似或异常相似的行,

; zend_extension =“ C:\ xampp \ php \ ext \ php_xdebug.dll”

(分号表示已发表评论)

删除分号,然后将路径替换为您刚才复制的dll的路径,例如:

zend_extension = "C:\xampp\php\ext\php_xdebug-2.3.2-5.4-vc9.dll"
  1. 同样找到行

    ; xdebug.remote_enable = 0; xdebug.remote_handler =“ dbgp”

删除两行前面的分号,并使 remote_enable = 1

xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
  1. 重新启动Apache服务器。

  2. 复制您的网站代码,C:/XAMPP/htdocs/(your_website)/ 这意味着您index.php应该在C:/XAMPP/htdocs/(your_website)/index.php

  3. 打开Netbeans,从现有资源中选择New project-> PHP-> PHP project,然后选择您刚刚复制到htdocs文件夹中的文件夹。将其设置为在本地Web服务器上运行。

  4. 在的第一行设置一个断点index.php并进行调试。

而已。

在各种不同的帖子上建议了其他设置,但是上述步骤对我来说非常有效。


4

我想在这里提及有关xdebug.remote_host的内容

xdebug.remote_host="127.0.0.1"

无效。在某些情况下可能会起作用,但是引号也会引起问题。大多数人在引号中使用IP地址时都没有问题,但这开了一个不好的先例。它使人们认为,如果要使用主机名或URL,则需要将其用引号引起来。这是不正确的,引号中的网址不起作用。

如果要使用URL进行调试,可以通过将URL放在等号之后来实现,如下所示:

xdebug.remote_host=subdomain.mydomain.com

我还要提及的是,如果您有端口号,请不要添加它。这不起作用:

xdebug.remote_host=subdomain.mydomain.com:9000

这是您想做的:

xdebug.remote_host=subdomain.mydomain.com
xdebug.remote_port=9000

如果这样做,我也提醒您确保已禁用remote_connect_back。像这样:

xdebug.remote_connect_back=0

或者您可以完全省略它,例如:

;xdebug.remote_connect_back=1

如果启用了remote_connect_back,它将尝试从传入连接中拉出您的IP地址,而忽略remote_host和端口设置。

Xdebug使用普通的旧TCP建立连接。这不是HTTP。这意味着像Fiddler这样的工具将不会显示任何数据包或有关调试的信息。如果需要调试,并查看服务器是否正在调用IDE,则有几种检查方法。

Wireshark将允许您查看TCP流量。同样,如果您使用的是Windows,Microsoft Message Analyzer也可以监视TCP。

但是,如果您要做的就是删除IDE,这可能是导致远程调试问题的原因,那么我建议您启动本地TCP服务器。

这是一个很棒的免费Java程序,用于启动TCP服务器:http : //sockettest.sourceforge.net/

如何启动TCP服务器

在“ IP地址”部分中,仅列出127.0.0.1或将其保留为0.0.0.0。然后列出端口号,对于xdebug,端口号通常默认为9000。

TCP服务器运行后,使用xdebug_break()打开远程网页;函数调用。这将告诉远程服务器上的xdebug在您在php.ini中列出的任何服务器和端口上开始调试。

观察套接字服务器,看看是否获得连接。发送的第一个数据应如下所示:

<init appid="APPID"
      idekey="IDE_KEY"
      session="DBGP_COOKIE"
      thread="THREAD_ID"
      parent="PARENT_APPID"
      language="LANGUAGE_NAME"
      protocol_version="1.0"
      fileuri="file://path/to/file">

如果您已经做到了,远程调试就可以了!只需停止服务器并设置您的IDE即可监听该端口!


如果您像我们大多数人一样,则您的开发人员机器位于具有NAT的路由器之后。这意味着您办公室中的每个人都有相同的公用IP地址。这是一个问题,因为xdebug与该IP地址联系以开始调试时,它击中了路由器,而不是计算机。可以将路由器配置为将某些端口号传递给单独的计算机,但是您可能不希望这样做,因为该端口将是开放的,直到您将路由器设置更改回。

另一种选择是使用SSH。这里有一个很好的例子: http //stuporglue.org/setting-up-xdebug-with-netbeans-on-windows-with-a-remote-apache-server/#attachment_1305

我的首选是使用Ngrok。Ngrok是重定向HTTP,https和TCP通信的好工具。为了使用TCP重定向功能,您需要注册一个免费帐户。

注册帐户并将API密钥添加到计算机后,请在IDE所在的计算机上运行以下命令:

ngrok tcp 9000

这将打开从ngrok服务器到您在其上运行命令的任何计算机的tcp(不是http)隧道。我正在使用端口9000,如果将IDE配置为其他Xdebug端口,则可以更改此端口。

这是您应该看到的:

Ngrok TCP隧道已打开

您将需要查看打开的TCP隧道的URL。在此示例中是:

0.tcp.ngrok.io:14904

对于此会话,服务器上的Xdebug设置应为:

xdebug.remote_host=0.tcp.ngrok.io
xdebug.remote_port=14904

每次启动ngrok时,URL和端口都会更改。如果要使用相同的URL和端口,则必须升级到付费帐户。对php.ini进行更改后,请确保重新启动apache。


3

我只是花了几个小时在此页面上阅读了这么多答案,还有其他类似的答案,却没人提及最终成为我解决方案的原因:

确保您选择的端口设置在所有3个位置匹配

我的问题是所选端口需要匹配三个位置。我的两个说9001,一个说9000。我将它们全部更改为9000。

这就是问题所在,为什么Netbeans只说“等待连接(netbeans-xdebug)”。

3个端口设置位置是:

  • php.inixdebug.remote_port=9000
  • 项目属性>运行配置>高级
  • Netbeans>工具>选项> PHP>调试

“项目属性”在哪里?
Geoff

@Geoff在“项目”面板/窗口/框架(可能已经可见,但也可以通过打开Window > Projects)中,右键单击您的项目,然后选择“属性”。如果我的回答和评论对您有帮助,我将不胜感激:-)
Ryan

“项目属性”中的端口是9001。我将其设置为9000,但它一直恢复为9001,所以我将其他端口设置为9001,但对连接
Geoff

@Geoff您看到什么错误消息,或者遇到了什么?并且您是否证明php.ini您编辑的实际上是在这种情况下使用的那个?例如,有时会有一个php.ini用于CLI(命令行),而另一个则用于其他情况。您可以发布包含很多详细信息的StackOverflow问题,然后在此处链接到它,以便我看到它。
瑞安

我使用xampp控制面板访问php.ini(位于c:\ xampp \ php \ php.ini中)。如果我从目录中编辑它,则它是同一文件。错误消息与该帖子的标题相同,即“等待连接(netbeans-xdebug)”。我将发布一个问题。链接
Geoff

2

还要检查“ Windows”防火墙设置。

对我来说,它不起作用,因为我的LAN网络被声明为“公共网络”。我将其切换到“工作网络”后,它工作正常。


1

在我的情况下,Apache日志显示了有关未设置date.timezone的PHP警告。一旦在php.ini中设置Xdebug / netbeans,它便开始工作并重新启动apache。

date.timezone = America/Los_Angeles

这是PHP 5.5。


1

我在Windows上使用xampp,并将php.ini的[XDebug]部分(在底部)更改为以下内容,以使其正常工作:

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

来自Netbeans Wiki的资源:http : //wiki.netbeans.org/HowToConfigureXDebug

如果您正在运行Apache,请记住在配置XDebug并保存php.ini之后重新启动它。



1

我的情况下,如果我在php ini中添加以下内容,则无法正常工作

zend_extension_ts =“ C:\ PHP \ PHP560 \ ext \ php_xdebug-2.4.0rc4-5.6-vc11.dll”

但是如果我加上

zend_extension =“ C:\ PHP \ PHP560 \ ext \ php_xdebug-2.4.0rc4-5.6-vc11.dll”

一切正常。


1

正确设置了php.ini文件,netbeans,路由器上的端口转发后,我仍然很烦恼“正在等待连接(netbeans-xdebug)。我最终在netbeans页面上注意到“不要忘记设置output_buffering = Off在您的php.ini文件中”。

因此,我检查了/etc/php/7.x/apache2/php.ini文件,并确保它的值足够为4096。所以我将output_buffering = Off重置并使其正常工作!

希望这对某人有帮助,因为该消息暗示这是连接错误而不是配置错误。



0

可以尝试开始 php -i在命令窗口中。重定向输出时出现错误

对我来说,这是最终的解决方案,因为我下载的Xdebug版本错误

对我来说应该是: php_xdebug-2.1.2-5.3-vc6.dll

但是我有:php_xdebug-2.2.4-5.3-vc9.dll。所以发生了一个错误php -i

E:\Programme\php>php -i > myOutputFromPhp

产生以下错误

无法加载Xdebug-它是使用配置API220090626,TS,VC9构建的,而正在运行的引擎是API220090626,TS,VC6


0

我有同样的问题。为什么?首先,我安装了WAMP,感谢Netbeans,他们一起工作成了一种魅力。后来我安装了XAMPP,Localhost站点运行平稳,但是NetBeans从未连接到XAMPP(netbeans-xdebug)。同时,NetBeans与Wamp配合良好。

我的解决方法是回到Wamp。总比没有好。

我的电脑:Win-7-32,NetBeans-8.0.2,

wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b

xampp-win32-5.6.8-0-VC11


0

对于Ubuntu用户:

  1. 苏多苏
  2. apt-get install php5-dev php-pear
  3. pecl安装xdebug
  4. 查找/ -name'xdebug.so'2> / dev / null
  5. 它将返回类似:/usr/lib/php5/20121212/xdebug.so
  6. vi /etc/php5/apache2/php.ini
  7. 添加此行:zend_extension =“ / usr / lib / php5 / 20121212 / xdebug.so”
  8. 服务apache2重新启动
  9. 重新启动IDE

0

我花了很多时间来尝试设置最佳设置,尽管@Johnson TA的设置几乎是正确的,但值得自己回复。

他说

xdebug.remote_host = 192.168.1.5-这是我系统的IPv4地址,我更改为该地址,因为我无法使用localhost和127.0.0.1进行调试。

好吧,不是每个人都可以使用私有地址,或者它可能是动态的或其他东西。另外,以我为例,在调试真正开始之前,我要等待很长的时间-每次大约30 s。那是不切实际的。

我确信每个人都有这些问题,至少在Windows 7左右。该问题与名称解析和xdebug之间的混合有关。要克服它们,请确保:

  • 未使用端口9000。如果是这样,请将其更改为php.ini和netbeans中未使用的。
  • 确保xdebug.remote_enableon
  • 如果您希望能够同时使用localhost127.0.0.1地址进行调试,请打开\Windows\System32\drivers\etc并确保其中包含以下行:

    127.0.0.1本地主机

    :: 1本地主机

确保第一行之前没有#,第二行确实有#。

我正在工作的php.ini部分(我不需要探查器,因此禁用了它):

[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9001
xdebug.trace_output_dir = "C:\xampp\tmp"
xdebug.remote_log = "C:\xampp\tmp\xdebug\xdebug.log"
xdebug.idekey = "netbeans-xdebug"
xdebug.remote_autostart = on
xdebug.remote_connect_back = on

停止netbeans调试器。重新启动Apache。

我敢打赌,您将不会再等待很长时间,也不会再遇到调试器的奇怪行为。

说明:尽管在etc / hosts中,他们说“本地主机名称解析是在DNS本身内部处理的”,但由于某种原因,如果您在该文件中未明确指出,则它与xdebug不能很好地配合。明确地说,它似乎对整体没有害处,并使用xdebug解决了这个问题。但是,您还需要显式禁用localhost(:: 1)的sIPv6缩写,以便所有这些工作。不知道内部原因,而是尝试所有组合,而这对我来说就像一种魅力。


0

对于一个项目,我有这个问题,而对于其他项目,则没有。因此,xdebug已正确配置,项目设置正常,但仍然无法正常工作。

因此,我只是删除了包含项目设置的nbproject子目录,并使用现有源创建了一个新项目。这为我解决了这个问题。


0

选择特定的浏览器进行调试:

  1. 右键单击项目->选择属性
  2. 选择类别:浏览器,然后选择特定的浏览器进行调试

0

如果您的xdebug无法正常工作,请检查服务器日志:

$ sudo less /var/log/httpd/error_log

要检查连接,请使用以下命令:

$ sudo netstat -an

在netbeans上启动调试后,如果使用netstat命令,则可以看到xdebug的端口(可能是80):

tcp6       0      0 192.168.33.10:80       192.168.33.2:49901      ESTABLISHED

netbeans的端口是9000:

tcp        0      0 192.168.33.10:52024    192.168.33.2:9000       ESTABLISHED

您可以从此处更改xdebug的端口(从顶部菜单,工具->选项-> PHP): 在此处输入图片说明

如果未建立连接,则很可能是您的连接被防病毒程序或防火墙阻止。您可以在防病毒程序或防火墙中对其进行检查,并删除该阻止,因为它是安全的连接。


0

在更改了php.ini或xdebug.ini文件后,无论您如何运行Web服务器,请确保重新启动该Web服务器(例如:在CentOS上重新启动service httpd),否则Apache将无法启动该服务器。您对该.ini文件所做的更改。

CentOS上的xdebug软件包是“ phpXXu-pecl-xdebug”。

最新Xdebug的默认设置通常很好。仅在Apache .ini文件中的某个位置正确获取这两个值是绝对必要的:

xdebug.remote_enable=on
xdebug.remote_host=[DNS entry that resolves to the IP4 of your debugger]

0

我遇到了同样的问题,试图解决了几个小时。我最终发现,chrome扩展程序ipflood会更改标题,使它看起来像您正在使用代理服务器,这是原因。

我禁用它后效果很好!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.