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

时间:2013-07-12 11:16:28

标签: php windows apache netbeans xdebug

需要帮助来配置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调试项目时,它会显示“Waiting For Connection(netbeans-xdebug)”。

有人可以帮我配置吗? 非常感谢。

提前感谢。

23 个答案:

答案 0 :(得分:112)

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

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地址,我更改为此,因为我无法使用localhost127.0.0.1进行调试。

在NetBeans IDE中

,打开Tools-> Options -> PHP -> Debugging。调试器端口和会话标识的值应与php.ini中指定的端口和标识符匹配。

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

谢谢约翰逊

答案 1 :(得分:10)

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

如果Netbeans和Web服务器位于同一系统上,理想情况下,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的调试过程。这里的缺点是所有请求都会启动调试数据收集和报告(使一切变慢,并生成更多数据)。

虽然从我收集到的内容中,大多数这些"等待连接(netbeans-xdebug)" Windows上的问题(使用XAMPP,Wamp-Server等)通常是Windows防火墙和McAfee(或其他防火墙和防病毒软件)阻止连接的结果......

来源:Netbeans "Waiting For Connection (netbeans-xdebug)" Issue

答案 2 :(得分:5)

我是一名.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中的所有内容,然后单击Analyze my phpinfo output。它会向您显示适合您配置的Xdebug文件。

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

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

  9. 找到类似或类似的行,

  10. ; 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”

    2. 删除两行前面的分号并生成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. Open Netbeans选择New project - > PHP - >来自现有源代码的PHP项目,并选择刚刚在htdocs文件夹中复制的文件夹。 将其设置为在本地Web服务器上运行。

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

      5. 就是这样。

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

答案 3 :(得分:4)

我想在这里提一下xdebug.remote_host

xdebug.remote_host="127.0.0.1"

无效。它可能在某些情况下有效,但引号也可能导致问题。大多数人在引号中使用IP地址时没有问题,但这开创了一个不好的先例。它让人们认为,如果你想使用主机名或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/

How to start a TCP Server

在“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 tunnel open

您需要查看打开的TCP隧道的URL是什么。在这个例子中它是:

0.tcp.ngrok.io:14904

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

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

每次启动ngrok时,URL和端口都会更改。如果您想拥有相同的网址和端口,则必须升级到付费帐户。确保在更改php.ini后重新启动apache。

答案 4 :(得分:3)

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

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

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

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

3端口设置位置为:

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

答案 5 :(得分:2)

同时检查“windows”防火墙设置。

对我来说,它没有用,因为我的LAN网络被宣布为“公共网络”。 在我将其切换到“工作网络”之后,它运行良好。

答案 6 :(得分: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维基:http://wiki.netbeans.org/HowToConfigureXDebug

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

答案 7 :(得分:1)

添加此功能对我有用:

xdebug.idekey=netbeans-xdebug   

答案 8 :(得分:1)

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

date.timezone = America/Los_Angeles

这是PHP 5.5。

答案 9 :(得分:1)

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

所以我检查了/etc/php/7.x/apache2/php.ini文件,确定它的值是4096.所以我重置了output_buffering = Off并且它工作了!!!

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

答案 10 :(得分:1)

我是我的情况,如果我在php ini中添加以下它不起作用

  

zend_extension_ts =&#34; C:\ PHP \ PHP560 \分机\ php_xdebug-2.4.0rc4-5.6-vc11.dll&#34;

但如果我添加

  

的zend_extension =&#34; C:\ PHP \ PHP560 \分机\ php_xdebug-2.4.0rc4-5.6-vc11.dll&#34;

工作正常。

答案 11 :(得分:0)

另外,请考虑xdebug的NTS或TS版本是否适合您的情况。 检查 Apache 日志以获取提示

答案 12 :(得分: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

产生ERROR

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

答案 13 :(得分:0)

如果您有最新版本的 Xdebug,请尝试此设置,旧版本的语法已更改

https://xdebug.org/docs/upgrade_guide

xdebug.mode=debug
xdebug.start_with_request = Yes
    ;xdebug.mode=profile
    ;xdebug.start_with_request=trigger
    xdebug.client_host = "localhost"
    xdebug.client_port = 9003
    xdebug.remote_handler = "dbgp"
    xdebug.log = "C:\xampp\tmp\xdebug\xdebug.log"
    xdebug.trace_output_dir = "C:\xampp\tmp"

答案 14 :(得分:0)

我遇到了同样的问题并试图解决它几个小时。我终于发现Chrome扩展程序ipflood改变了标题,使其看起来像是在使用代理,这是原因。

禁用后它完全正常!

答案 15 :(得分:0)

在对php.ini或xdebug.ini文件进行更改后,无论您如何运行Web服务器,请确保重新启动该Web服务器(例如: service httpd restart 在CentOS上)或Apache不会接受你对该.ini文件所做的更改。

CentOS上的xdebug软件包是#34; phpXXu-pecl-xdebug&#34;。

最近的Xdebug上的默认值通常很好。只需要在Apache .ini文件中的某个位置正确获取这两个值是非常必要的:

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

答案 16 :(得分: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的端口(从顶部菜单,工具 - &gt;选项 - &gt; PHP): enter image description here

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

答案 17 :(得分:0)

选择要调试的特定浏览器:

  1. 右键点击项目 - &gt;选择属性
  2. 选择类别:浏览器然后选择特定浏览器进行调试

答案 18 :(得分:0)

我有一个项目的问题,但其他人没有。所以xdebug配置正确,项目设置没问题,但仍然没有用。

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

答案 19 :(得分:0)

我花了很多时间试图获得最佳设置,这值得自己回复,即使@Johnson T A是一个几乎正确的。

他说

  

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

嗯,不是每个人都可以使用私人地址,或者它可能是动态的,或其他东西。另外,在我的情况下,我在调试实际开始之前遇到了非常长的等待时间 - 每次都是30秒左右。那是不切实际的。

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

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

    127.0.0.1 localhost

    :: 1 localhost

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

我的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短符号,以便所有这些都能正常工作。不知道内部的原因,但所有的组合,这对我来说就像一个魅力。

答案 20 :(得分:0)

对于Ubuntu用户:

  1. sudo su
  2. apt-get install php5-dev php-pear
  3. pecl install xdebug
  4. find / -name'xdebug.so'2&gt;的/ 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. service apache2 restart
  9. 重启IDE

答案 21 :(得分: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

答案 22 :(得分:0)

检查一下:Launch XDebug in Netbeans on an external request


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

尝试继续使用Project&gt;运行配置&gt;提前

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