Netbeans 显示“等待连接(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 调试一个项目时,它显示“等待连接(netbeans-xdebug)”。

有人能帮我配置一下吗? 非常感谢。

先谢谢了。

86591 次浏览

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

date.timezone = America/Los_Angeles

这是 PHP 5.5。

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

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"

这是我的系统的 IPv4地址,我改成这个是因为我不能用 localhost127.0.0.1进行调试。

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

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

谢谢,约翰逊

看看这个 应外部请求在 Netbeans 中启动 XDebug


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

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

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

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

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

对我来说,它不工作,因为我的局域网网络被声明为“公共网络”。 我把它换成“工作网络”之后就没问题了。

我在 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 here: http://wiki.netbeans.org/HowToConfigureXDebug

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

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

如果 NetBeans 和 Web 服务器在同一个系统上,理想情况下,XDebug 将被配置为将数据发送回 127.0.0.1:9000,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,您可以配置 XDebug 将数据发送回原始请求的 $_SERVER['REMOTE_ADDR']..。

xdebug.remote_connect_back=1

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

如果你还有别的麻烦,这个..。

xdebug.remote_autostart=1

... 也将启动对 所有请求的调试过程,而不仅仅是对那些具有正确的会话启动查询或 cookie 的请求。这里的缺点是,所有请求都将启动调试数据收集和报告(使一切变慢,并生成更多数据)。

虽然从我收集的资料来看,大部分“等待连接(netbeans-xdebug)”的问题通常是由于 Windows 防火墙和 McAfee (或其他防火墙和反病毒软件)阻塞了连接..。

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

添加这个确实对我有用:

xdebug.idekey=netbeans-xdebug

我也有同样的问题。 为什么? 首先我安装了 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. 你好
  2. Apt-get install php5-dev php-pear
  3. 安装 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

我花了很多时间试图得到最佳的设置和事情,这值得它自己的答复,即使@Johnson T 的一个它几乎是正确的。

他说

这是我的系统的 IPv4地址,我改为这个地址是因为我无法使用 localhost 和127.0.0.1进行调试。

不是每个人都能使用私人地址,或者是动态地址,或者其他东西。而且,在我的案例中,在调试实际开始之前,我就患上了 非常长的等待时间——每次都是30秒左右。太不切实际了。

我相信每个有这些问题的人至少是 在 Windows7上左右。这个问题与名称解析和 xdebug 之间的混合有关。要克服这些困难,就要确保:

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

    127.0.0.1本地主机

    * 1名当地主持人

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

我工作的 php.ini 部分(我不需要 profiler,所以我禁用了它) :

[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 中他们说“ localhost 名称解析是在 DNS 本身内部处理的”,但是不管出于什么原因,如果您没有在该文件中明确说明,那么它就不能很好地与 xdebug 一起工作。显式地使用它似乎总体上没有什么坏处,并且通过 xdebug 解决了这个问题。但是还需要显式禁用 localhost (: : 1)的 sIPv6短符号,以便所有这些都能正常工作。不知道内部原因,但尝试了所有的组合,这一个工程为我喜欢的魅力。

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

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

这可能不是每个人的解决方案,但它为我工作,我希望它能帮助某人。

  1. 安装 XAMPP

  2. 为 PHP 安装 netbeans。

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

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

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

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

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

  8. Goto XAMPP 控制面板,单击 Apache 前面的 Config 按钮并选择 php.in,

  9. 找到相似或完全相似的行,

= “ 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 _ able = 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 文件夹中的文件夹。 将其设置为在 Localweb 服务器上运行

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

就是这样。

在各种不同的职位上建议了额外的设置,但是上面提到的步骤对我来说非常有效。

我对一个项目有这个问题,但对其他项目没有。所以 xdebug 配置正确,项目设置正常,但是仍然无法工作。

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

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

  1. 右击 project-> select Properties
  2. 选择类别: 浏览器然后选择一个特定的浏览器进行调试

我我的情况下,如果我添加下面的 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”

它工作得很好。

我想在这里提到一些关于 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 上,MicrosoftMessageAnalyzer 还可以监视 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

我的首选方案是使用 恩格罗克。Ngrok 是重定向 http、 https 和 TCP 流量的一个很好的工具。为了使用 TCP 重定向功能,您需要注册一个免费帐户。

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

ngrok tcp 9000

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

我只是花了几个小时在这个网页和其他类似的网页上阅读了很多答案,没有人提到什么最终成为了我的解决方案:

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

我的问题是,有三个地方,选择的港口需要匹配。两个说9001一个说9000。我把它们都改成了9000。

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

3个端口设置位置是:

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

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

所以我检查了/etc/php/7。X/apache2/php.ini 文件,确定它的值是4096。所以我重新设置了 output _ buffer = Off,结果它起作用了! ! !

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

如果 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 的端口(从顶部菜单,Tools-> Options-> PHP) : enter image description here

如果连接没有建立,很有可能您的连接被防病毒程序或防火墙阻塞。您可以检查它在您的反病毒程序或防火墙,并删除阻塞,因为它是一个安全的连接。

在您更改了 php.ini 或 xdebug. ini 文件之后,无论您如何运行 Web 服务器,请确保重新启动该 Web 服务器(例如: CentOS 上的 服务 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]

我也遇到了同样的问题,我花了几个小时试图解决它。我最终发现,改变标题使你看起来像是在使用一个代理的铬扩展 ipflood,是原因。

我把它关了之后,它还能正常工作!

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

此外,还要考虑 NTS 或 xdebug 的 TS 版本是否适合您的情况。 检查 Apache 日志中的提示

对于 Windows 用户来说,这对我很有用:

  1. 获取 phpinfo ()输出并复制到这里: < a href = “ https://xdebug. org/Wizard”rel = “ nofollow norefrer”> https://xdebug.org/wizard

  2. 它会告诉你需要下载的确切 dll 是什么。

  3. 将 dll 复制到 C: xampp php ext 中,并将其重命名为 php _ xdebug. dll

  4. 请注意已安装的 xdebug 版本。这是我的关键!我的 xdebug 版本是3所以我必须..。

  5. 将 php.ini 文件更新为以下内容(对于 xdebug v3) :

    [XDebug]
    zend_extension = xdebug
    xdebug.mode=debug
    xdebug.client_host=localhost
    xdebug.client_port=9000
    xdebug.idekey="netbeans-xdebug"

  6. 重新启动 Apache HTTP Server 和 Netbeans。