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地址,我改变了这个,因为我不能用localhost
和127.0.0.1
debugging。
在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,但它为我工作,我希望它可以帮助一个人。
-
安装XAMPP
-
安装PHP的netbeans。
-
打开IIS并停止它。 它默认运行在80端口上(我在端口80上运行XAMPP,默认情况下,运行在其他端口上可能需要额外的configuration设置)
-
打开XAMPP控制面板并启动Apache。 如果端口80空闲,则不会出现问题。
-
在浏览器中打开本地主机应该显示XAMPP主页。
-
打开左侧窗格中的
phpinfo()
链接并复制页面上的所有内容。 转到: http : //xdebug.org/wizard.php并粘贴文本框中的所有内容,然后单击分析我的phpinfo输出。 它将显示适合您的configuration的Xdebug文件。 -
下载给定的Xdebug DLL并将其复制到
C:\xampp\php\ext
(Xampp是默认的Xampp安装目录) -
转到XAMPP控制面板,点击Apache前面的configurationbutton,select
php.in
, -
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"
-
同样找线
; 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,从现有源文件中selectNew project – > PHP – > PHP项目,然后select刚刚在htdocs文件夹中复制的文件夹。 将其设置为在本地Web服务器上运行。
-
在
index.php
第一行设置一个断点并debugging。
而已。
其他设置build议在各种不同的职位,但上述步骤完美的工作。
我花了几个小时在这个页面上阅读了很多的答案,其他人也喜欢,没有人提到最终成为我的解决scheme:
确保所有3个位置的select的端口设置匹配
我的问题是,有三个地方,select的端口需要匹配。 我的两个说9001和一个说9000.我把他们全部改为9000。
这就是问题,为什么Netbeans只会说“等待连接(netbeans-xdebug)”。
3个端口设置位置是:
-
php.ini
(xdebug.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/
在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端口,则可以更改此端口。
这是你应该看到的:
您将需要查看已打开的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用户:
- sudo su
- apt-get安装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
我花了很多时间试图获得最佳的设置,而这个应该得到自己的答复,尽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_enable
已on
。 -
如果您希望能够使用
localhost
和127.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
- 右键单击项目 – >select属性
- select类别:浏览器然后select特定的浏览器进行debugging