需要帮助来配置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)”。
有人可以帮我配置吗? 非常感谢。
提前感谢。
答案 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地址,我更改为此,因为我无法使用localhost
和127.0.0.1
进行调试。
,打开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,并继续进行全新安装。
这可能不是每个人的解决方案,但它对我有用,我希望它对某人有帮助。
安装XAMPP
为PHP安装netbeans。
打开IIS并停止它。它默认在端口80上运行。(我在端口80上运行XAMPP,即默认情况下,在其他端口上运行可能需要其他配置设置)
打开XAMPP控制面板并启动Apache。如果端口80是免费的,则不会出现问题。
在浏览器中打开localhost应显示XAMPP主页。
在左侧窗格中打开phpinfo()
链接并复制页面上的所有内容。
转到:http://xdebug.org/wizard.php并粘贴TextBox中的所有内容,然后单击Analyze my phpinfo output。它会向您显示适合您配置的Xdebug文件。
下载给定的Xdebug dll并将其复制到C:\xampp\php\ext
(Xampp是默认的Xampp安装目录)
转到XAMPP控制面板,点击Apache前面的配置按钮,然后选择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
Open Netbeans选择New project - > PHP - >来自现有源代码的PHP项目,并选择刚刚在htdocs文件夹中复制的文件夹。 将其设置为在本地Web服务器上运行。
在index.php
的第一行设置断点并进行调试。
就是这样。
在各种不同的帖子上建议了其他设置,但上述步骤对我来说非常合适。
答案 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/
在“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和端口都会更改。如果您想拥有相同的网址和端口,则必须升级到付费帐户。确保在更改php.ini后重新启动apache。
答案 4 :(得分:3)
我花了好几个小时在这个页面上阅读了很多答案,其他人也喜欢这样的答案,没有人提到最终成为我的解决方案:
我的问题是所选端口需要匹配的三个地方。我的两个说9001和一个说9000.我把它们全部改为9000。
这就是问题,为什么Netbeans只会说“等待连接(netbeans-xdebug)”。
3端口设置位置为:
php.ini
(xdebug.remote_port=9000
)答案 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):
如果未建立连接,则很可能您的连接被防病毒程序或防火墙阻止。您可以在防病毒程序或防火墙中进行检查,并删除该块,因为它是一个安全的连接。
答案 17 :(得分:0)
选择要调试的特定浏览器:
答案 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之间的混合有关。要克服它们,请确保:
xdebug.remote_enable
为on
。如果您希望能够使用localhost
和127.0.0.1
地址进行调试,请打开\Windows\System32\drivers\etc
并确保您拥有以下行:
127.0.0.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用户:
答案 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;提前
并切换到默认值,检查它是否在浏览器中打开另一个窗口