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

需要帮助来configurationxdebug,以便从IDE netbeans中debugging项目。

这些是我的组件的function:

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,当我从NetBeansdebugging项目时,它显示“等待连接(netbeans-xdebug)”。

有人可以帮我configuration吗? 将非常感激。

提前致谢。

你纠正了这个问题吗?如果不是,请尝试这个。

1)php.ini文件内容

 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地址,我改变了这个,因为我不能用localhost127.0.0.1debugging。

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

现在保存php.ini,重新启动Apache,现在尝试debugging

感谢约翰逊

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

如果NetBeans和Web服务器在同一个系统上,理想情况下,XDebug将被configuration为将数据发回到NetBeans将监听的数据(仅在每个会话中) 127.0.0.1:9000

 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侦听,那么可以configurationXDebug将数据发送回原始请求的$_SERVER['REMOTE_ADDR'] 。 。

 xdebug.remote_connect_back=1 

这样你就不必指定确切的IP地址(例如,在上面的回答LAN IP: 192.168.1.5 )。 这里的缺点是任何来源都可以连接。

如果你有更多的麻烦,这个…

 xdebug.remote_autostart=1 

…也将启动所有请求的debugging过程,而不仅仅是具有适当的会话启动查询或cookie的debugging过程。 这里的缺点是所有的请求都会启动debugging数据收集和报告(使得一切都变慢,并产生更多的数据)。

尽pipe从我收集的信息来看,Windows上的大多数“等待连接(netbeans-xdebug)”问题(包括XAMPP,Wamp-Server等)通常是由Windows防火墙和McAfee(或其他防火墙和防病毒 – 病毒软件)阻止连接…

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

我是一个.Net程序员,也是PHP的新手。 最近我试图在我的机器上安装一个开源的PHP应用程序(Windows)。 经过5-6天的奋斗之后,我会列出为我工作的步骤。

我卸载了以前安装的每个XAMPP和NetBeans,并进行了全新的安装。

这可能不是每个人的解决scheme,但它为我工作,我希望它可以帮助一个人。

  1. 安装XAMPP

  2. 安装PHP的netbeans。

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

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

  5. 在浏览器中打开本地主机应该显示XAMPP主页。

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

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

  8. 转到XAMPP控制面板,点击Apache前面的configurationbutton,selectphp.in

  9. find类似或者非常喜欢的行,

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

(分号意味着它被评论)

删除分号,并将pathreplace为刚才复制的dllpath:

 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,从现有源文件中selectNew project – > PHP – > PHP项目,然后select刚刚在htdocs文件夹中复制的文件夹。 将其设置为在本地Web服务器上运行。

  4. index.php第一行设置一个断点并debugging。

而已。

其他设置build议在各种不同的职位,但上述步骤完美的工作。

我花了几个小时在这个页面上阅读了很多的答案,其他人也喜欢,没有人提到最终成为我的解决scheme:

确保所有3个位置的select的端口设置匹配

我的问题是,有三个地方,select的端口需要匹配。 我的两个说9001和一个说9000.我把他们全部改为9000。

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

3个端口设置位置是:

  • php.inixdebug.remote_port=9000
  • 项目属性>运行configuration>高级
  • Netbeans>工具>选项> PHP>debugging

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

 date.timezone = America/Los_Angeles 

这是PHP 5.5。

检查“windows”防火墙设置。

对我来说,这是行不通的,因为我的局域网被宣布为“公共networking”。 我切换到“工作networking”后,它工作正常。

我使用xampp在Windows上,并将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,请记得在configurationXDebug并保存php.ini后重新启动它。

添加这个对我有用:

 xdebug.idekey=netbeans-xdebug 

我的情况下,如果我添加以下在php ini它没有工作

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

但是,如果我添加

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

它工作正常。

我想在这里提一下xdebug.remote_host

 xdebug.remote_host="127.0.0.1" 

无效。 它可能在某些情况下工作,但报价也可能导致问题。 在报价中使用IP地址时,大多数人没有问题,但这是一个不好的先例。 它使人们认为,如果你想使用主机名或URL,你需要把它放在引号。 这是不正确的,在引号的url将无法正常工作。

如果你想使用一个URL进行debugging,你可以通过把这个url放在这个equals之后来实现:

 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来build立连接。 这不是HTTP。 这意味着像Fiddler这样的工具不会显示任何数据包或debugging信息。 如果您需要debugging,并查看服务器是否正在对您的IDE进行调用,则可以通过几种方法进行检查。

Wireshark将允许你看到TCPstream量。 此外,如果您在Windows上,Microsoft消息分析器也可以监视TCP。

但是,如果你所要做的只是删除你的IDE是一个远程debugging问题的可能原因,我build议你启动一个本地TCP服务器。

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

如何启动一个TCP服务器

在IP地址部分,只需列出127.0.0.1或保留在0.0.0.0。 然后列出端口号,通常默认为xdebug为9000。

一旦TCP服务器正在运行,用xdebug_break()打开远程网页; 函数调用它。 这将告诉远程服务器上的xdebug开始debugging您在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"> 

如果你已经做到了这一点,远程debugging工作! 只要停止服务器,并设置您的IDE在该端口上收听!


如果您像我们大多数人一样,您的开发人员机器就在具有NAT的路由器之后。 这意味着你办公室里的每个人都有相同的IP地址。 这是一个问题,因为当xdebug联系那个IP地址开始debugging时,它会碰到路由器,而不是你的电脑。 路由器可以configuration为将某些端口号传递给各台计算机,但您可能不想这样做,因为该端口将会打开,直到您更改路由器设置。

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

我最喜欢的select是使用Ngrok 。 Ngrok是redirecthttp,https和TCPstream量的好工具。 为了使用TCPredirectfunction,您需要注册一个免费帐户。

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

 ngrok tcp 9000 

这将从ngrok服务器打开一个tcp(而不是http)隧道到你运行命令的任何机器。 我正在使用端口9000,如果您的IDEconfiguration了不同的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。

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

所以我检查了/etc/php/7.x/apache2/php.ini文件,果然它的值是4096.所以我重置output_buffering =关,它工作!

希望这可以帮助某人,因为这个消息意味着这是一个连接错误,而不是一个configuration错误。

检查一下: 在外部请求中启动Netbeans中的XDebug


另一种方法是打开一个新窗口:

尝试继续执行Project> run configuration> advance

并切换到默认状态,检查它是否在浏览器中打开另一个窗口

尝试可以在命令窗口中启动php -i 。 当redirect输出错误是

对我来说,这是最终的解决scheme,因为我下载了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 – 它是用configurationAPI220090626,TS,VC9构build的,而运行的引擎是API220090626,TS,VC6

我有同样的问题。 为什么? 首先我安装了WAMP,感谢Netbeans和他们一起工作的魅力。 后来我安装了XAMPP,本地网站运行顺畅,但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

对于Ubuntu用户:

  1. sudo su
  2. apt-get安装php5-dev php-pear
  3. pecl安装xdebug
  4. find/ -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

我花了很多时间试图获得最佳的设置,而这个应该得到自己的答复,尽pipe@Johnson TA是一个几乎正确的答案。

他说

xdebug.remote_host = 192.168.1.5 – 这是我的系统的IPv4地址,我改变了这个,因为我不能用localhost和127.0.0.1进行debugging。

那么,不是每个人都可以使用一个私人地址,或者它可能是dynamic的或其他的东西。 而且,在我的情况下,在debugging实际开始之前,我经历了很长的等待时间 – 每次30秒左右。 这是不实际的。

我敢肯定,每个人都有这些问题至less在Windows 7左右。 问题与名称parsing和xdebug之间的混合有关。 要克服它们,请确保:

  • 端口9000没有被使用。 如果是这样的话,可以在php.ini和netbeans中将其更改为未使用的。
  • 确保xdebug.remote_enableon
  • 如果您希望能够使用localhost127.0.0.1地址进行debugging,请打开\Windows\System32\drivers\etc ,并确保您有以下几行:

    127.0.0.1 localhost

    :: 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 

停止netbeansdebugging器。 重新启动Apache。

我敢打赌你不会再忍受漫长的等待时间,也不会有debugging器的奇怪行为。

说明:虽然在etc / hosts中他们说“本地主机名称parsing是在DNS本身内部进行处理的”,无论出于何种原因,如果没有在文件中明确声明,xdebug不能正常工作。 明确地说,它似乎没有伤害整体,并解决这个问题与xdebug。 但是你也需要明确地禁用localhost(:: 1)的sIPv6短符号,以便所有这些工作。 不知道内部的原因,但是把所有的组合都拿出来,这个对我来说就像一个魅力。

我有一个项目的这个问题,但不为别人。 所以xdebugconfiguration正确,项目设置没问题,但仍然无法正常工作。

所以我刚刚删除了包含项目设置的nbproject子目录,并使用现有源创build了一个新项目。 这为我解决了这个问题。

select一个特定的浏览器进行debugging

  1. 右键单击项目 – >select属性
  2. select类别:浏览器然后select特定的浏览器进行debugging