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

Posted

技术标签:

【中文标题】netbeans 显示“等待连接 (netbeans-xdebug)”【英文标题】:netbeans shows "Waiting For Connection (netbeans-xdebug)" 【发布时间】:2013-07-10 22:13:30 【问题描述】:

需要帮助配置 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 无法连接的原因。 嗨,谢谢您的回复。如何在 netbeans 中注册扩展? 当我运行 phpinfo() 时,它显示我没有安装 xdebub.. 为什么?? PHP 日志或 Apache 日志中是否有任何错误?他们应该帮助诊断为什么 xdebug 没有在 PHP 中注册。 我花了一点时间调试它,最后发现问题是当netbeans启动xdebug时它转到HTTP://LOCALHOST?XDEBUG_SESSION_START=netbeans-xdebug并且有一个htaccess与重定向混淆。因此,将主机更改为 HTTP://LOCALHOST/index.php 导致它可以正常工作。所以HTTP://LOCALHOST/index.php?XDEBUG_SESSION_START=netbeans-xdebug 【参考方案1】:

您解决了这个问题吗?如果没有那么请试试这个。

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。调试器端口和会话ID的值应与php.ini中指定的端口和idekey匹配。

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

谢谢约翰逊

【讨论】:

非常有用的答案!我搜索了3个小时。 “xdebug.remote_host=192.168.1.5 - 这是我系统的 IPv4 地址,我改成这个是因为我无法使用 localhost 和 127.0.0.1 进行调试。”是解决方案。我用的是 Win 7 Prof. 这对我也有用,xdebug.remote_host = 127.0.0.1 这个配置很棒。不过,我注释掉了 IP 地址更改,然后将其保留为 localhost,效果很好。我想我只需要 idekey 设置。 我必须重新启动 Netbeans 才能使这个解决方案发挥作用。 @JérômeVerstrynge 哈哈,你让我开心。我花了一个小时搜索问题。但唯一有帮助的是重新启动 NetBeans。谢谢!!!!!!!!!【参考方案2】:

当 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 的请求。这里的缺点是所有请求都会启动调试数据收集和报告(使一切变慢,并生成更多数据)。

尽管根据我收集到的信息,Windows(使用 XAMPP、Wamp-Server 等)上的大多数“等待连接 (netbeans-xdebug)”问题通常是由 Windows 防火墙和 McAfee(或其他防火墙和防病毒软件)阻止连接...

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

【讨论】:

使用“xdebug.remote_connect_back=1”并没有解决我的问题。 如果还有人遇到问题 - 检查正在监听的端口。对我来说,尽管 Netbeans 被设置为在 9000 上收听,但事实并非如此。结果表明它在听不同的声音——但在近距离观察后——它不是静止的。更改 netbeans 调试器端口设置和 xdebug.remote_port 以获得闪亮的新端口有帮助:)【参考方案3】:

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

我卸载了以前安装的所有 XAMPP 和 NetBeans,并继续进行全新安装。

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

    安装 XAMPP

    为 PHP 安装 netbeans。

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

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

    在浏览器中打开 localhost 应该会显示 XAMPP 主页。

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

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

    进入XAMPP控制面板,点击Apache前面的Config按钮,选择php.in

    查找相似或完全相似的行,

;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"

    类似的查找行

    ;xdebug.remote_enable = 0 ;xdebug.remote_handler = "dbgp"

去掉两行前面的分号,改成remote_enable = 1

xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"

    重启 Apache 服务器。

    将您的网站代码复制到C:/XAMPP/htdocs/(your_website)/ 下 这意味着你的index.php 应该是C:/XAMPP/htdocs/(your_website)/index.php

    打开 Netbeans 选择 New project -> PHP -> PHP project from existing source 并选择您刚刚在 htdocs 文件夹中复制的文件夹。 将其设置为在本地 Web 服务器上运行。

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

就是这样。

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

【讨论】:

【参考方案4】:

我想在这里提一些关于 xdebug.remote_host 的事情

xdebug.remote_host="127.0.0.1"

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

在 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 端口,您可以更改此端口。

这是你应该看到的:

您需要查看打开的 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。

【讨论】:

【参考方案5】:

我只是花了几个小时在这个页面上阅读了这么多答案以及其他类似的答案,但没有人提到最终对我来说是什么解决方案:

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

我的问题是所选端口需要匹配三个位置。我的两个说9001,一个说9000。我把它们都改成了9000。

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

3个端口设置位置为:

php.ini (xdebug.remote_port=9000) 项目属性 > 运行配置 > 高级 Netbeans > 工具 > 选项 > PHP > 调试

【讨论】:

“项目属性”在哪里? @Geoff 在您的“项目”面板/窗口/框架(可能已经可见但也可以通过Window &gt; Projects 打开)中,右键单击您的项目并选择属性。如果我的回答和评论对您有帮助,我将不胜感激:-) “项目属性”中的端口是 9001。我将其设置为 9000,但它一直恢复为 9001,因此我将其他端口设置为 9001,但连接不愉快 @Geoff 您看到了什么错误消息,或者您遇到了什么?你有没有证明你编辑的php.ini实际上就是这个案例中使用的那个?例如。有时有一个 php.ini 用于 CLI(命令行),而另一个用于其他情况。您可以发布一个包含大量详细信息的 *** 问题,然后在此处链接到它,以便我看到它。 我使用xampp控制面板访问php.ini(在c:\xampp\php\php.ini)。如果我从目录中编辑它,它是同一个文件。错误消息与这篇文章的标题相同,即“等待连接(netbeans-xdebug)”。我会发布一个问题。link【参考方案6】:

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

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

【讨论】:

【参考方案7】:

如果您有最新版本的 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"

【讨论】:

【参考方案8】:

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

date.timezone = America/Los_Angeles

这是 PHP 5.5。

【讨论】:

【参考方案9】:

我在 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 后重新启动它。

【讨论】:

【参考方案10】:

添加这个确实对我有用:

xdebug.idekey=netbeans-xdebug   

【讨论】:

【参考方案11】:

我的情况是,如果我在 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"

一切正常。

【讨论】:

【参考方案12】:

在路由器上正确设置了 php.ini 文件、netbeans、端口转发后,我仍然遇到了“等待连接(netbeans-xdebug)”这个可怜的问题。我最终在 netbeans 页面上注意到“不要忘记设置output_buffering = 在您的 php.ini 文件中关闭”。

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

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

【讨论】:

【参考方案13】:

看看这个:Launch XDebug in Netbeans on an external request


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

尝试继续项目>运行配置>提前

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

【讨论】:

【参考方案14】:

可以尝试在命令窗口中启动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

【讨论】:

【参考方案15】:

我遇到了同样的问题。 为什么? 首先我安装了 WAMP,感谢 Netbeans 和他们一起工作的魅力。 后来我安装了 XAMPP,Localhost 站点运行顺利,但 NetBeans 永远无法连接到 XAMPP(netbeans-xdebug)。 同时,NetBeans 与 Wamp 配合得很好。

我的解决方案是回到 W​​amp。有总比没有好。

我的电脑: 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

【讨论】:

【参考方案16】:

对于 Ubuntu 用户:

    须藤苏 apt-get install php5-dev php-pear pecl 安装 xdebug find / -name 'xdebug.so' 2> /dev/null 它将返回如下内容:/usr/lib/php5/20121212/xdebug.so vi /etc/php5/apache2/php.ini 添加这一行:zend_extension="/usr/lib/php5/20121212/xdebug.so" 服务 apache2 重启 重启IDE

【讨论】:

【参考方案17】:

我花了很多时间试图获得最佳设置,这值得自己回复,尽管@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 本地主机

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

【讨论】:

【参考方案18】:

我在一个项目中遇到了这个问题,但在其他项目中没有。所以xdebug配置正确,项目设置ok,但是还是不行。

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

【讨论】:

【参考方案19】:

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

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

【讨论】:

【参考方案20】:

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

$ sudo less /var/log/httpd/error_log

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

$ sudo netstat -an

在netbeans上启动debug后,如果使用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):

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

【讨论】:

【参考方案21】:

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

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

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

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

【讨论】:

【参考方案22】:

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

我禁用它后它工作得很好!

【讨论】:

【参考方案23】:

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

【讨论】:

以上是关于netbeans 显示“等待连接 (netbeans-xdebug)”的主要内容,如果未能解决你的问题,请参考以下文章

python的颜色显示

python的颜色显示

Python图像全屏显示

python-颜色显示

使用Python显示图形交互窗口

Python:print显示颜色