我试图让xdebug使用eclipse(3.5)/ php(在xampp windows 7上)。我已经验证xdebug已在php中启用 - 我有精彩的输出,我的phpinfo显示所有xdebug的东西。我有远程调试,并在我的eclipse机器上输入了lan ip地址。
当我告诉eclipse进行调试时,它会启动浏览器并传递调试URL参数。看起来不错。
然而,在eclipse调试透视图中,它显示'启动myproject'57%'等待xdebug会话'。它永远坐在那里。
我已经关闭了两台机器上的Windows防火墙。
我尝试过隐式刷新。
有什么想法吗?
答案 0 :(得分:62)
我也有这个问题,我在php.ini
文件中遗漏了这一行:
xdebug.remote_enable = On
答案 1 :(得分:14)
确保您在php.ini
中使用 ABSOLUTE 路径定义了zend_extention:
例如:zend_extension=D:\SANDBOX\server\php\php_xdebug-2.1.0-5.3-vc6.dll
我在Windows上调试本地项目。到目前为止,我不需要xdebug.remote_enable = On
。
建议Xdebug会话是否未启动(挂起率为57%),请确保:
zend_extention
指令并加载调试,使用phpinfo()
检查netstat -an |find /i "listening"
)如果您需要在php.ini
中设置不同的端口:
xdebug.remote_enable = on
xdebug.remote_port = XXXX
并更正Eclipse中的Xdebug设置:
答案 2 :(得分:9)
我遇到了同样的问题,我通过将端口更改为XDebug(现在使用端口9001)来修复它。
这是我的php.ini内容:
zend_extension ="C:\...\EasyPHP-5.3.3\php\ext\php_xdebug-2.dll"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.remote_mode=req
xdebug.remote_autostart=0
同时检查apache日志文件,确保没有以下警告消息:
PHP警告:Xdebug必须在第0行的Unknown中作为Zend扩展加载
警告:Xdebug必须在 0 0 未知中作为Zend扩展名加载
如果这样做,请打开php.ini文件并使用';'进行评论extension=php_xdebug-2.dll
行:
;extension=php_xmlrpc.dll
extension=php_xsl.dll
**;extension=php_xdebug-2.dll**
;/PHPExt
答案 3 :(得分:6)
我和Zend Studio有同样的问题。我注意到xdebug会话没有正常启动。我把这个字符串传递给了url一次,从那时起它就运行了。
http://localhost/myalias/?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=13750956767461
我确定这是IDE中某处的配置问题。
答案 4 :(得分:6)
在争论3个小时并在论坛上尝试每个解决方案后,我发现简单的技巧是在 zend_extension中指定路径的Xdebug dll 时删除引号在 php.ini 中。我在Windows Vista上使用XAMPP(PHP 5.3.6 + Apache 2.2)+ Eclipse Indigo + PDT + Xdebug 2.1.2。
以下是适合我的确切配置 -
zend_extension=C:\xampp\php\ext\php_xdebug-2.1.2-5.3-vc6.dll
#Note that the path above is not in quotes
xdebug.remote_enable=true
xdebug.remote_host=localhost
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir=C:\xampp\tmp
我使用了端口9001,以便在其他程序已经使用的情况下不与9000发生冲突。确保这与Eclipse中的端口匹配>偏好> PHP>调试> Xdebug也是。另外,在编辑php.ini后重启apache。
一旦我将它添加到php.ini,一切都像冰淇淋一样。
答案 5 :(得分:3)
我意识到TCP端口正在使用中,这就是它挂起的原因。我在php.ini和eclipse设置中更改了端口。
答案 6 :(得分:3)
答案 7 :(得分:2)
检查Eclipse的Web浏览器设置是否正确。
窗口/首选项/常规/ Web浏览器/外部Web浏览器/编辑设置
就我而言,外部Web浏览器二进制文件的路径不正确。它说“/ usr / bin / mozilla”而不是“/ usr / bin / firefox”。 不知道这个设置是怎么产生的,但是在更改之后,firefox浏览器窗口终于出现了。
答案 8 :(得分:1)
我遇到了完全相同的问题。我的配置与您的配置相同,除了在 php.ini 文件中添加xdebug.remote_enable = On
之外,还添加了以下内容:
xdebug.remote_connect_back=1
这可以启用多主机远程调试,您可以选择定义主机IP。
xdebug.remote_host=IP_ADDRESS
答案 9 :(得分:1)
我查看了apache日志,并且有很多行找不到文件错误。
运行 - >调试配置 - > PHP网页 - > Your_configuration
我取消选中auto generate
并将文件名设置为index.php
。
似乎在任何错误导致eclipse无法正常运行的情况下导致此等待会话"
答案 10 :(得分:1)
对我来说,将其他人建议的 [xdebug] 配置添加到保存在以下路径C:\ wamp64 \ bin \ apache \ apache2.4.23 \ bin中的php.ini文件中。从本质上讲,它是一个符号链接,指向/链接到各自php版本文件夹下的phpForApache.ini文件,该文件夹与wamp64一起安装,例如php5.6.25。
简而言之,添加以下行 phpForApache.ini 来帮助我 -
zend_extension = c:\wamp64\bin\php\php5.6.25\ext\php_xdebug-2.5.1-5.6-vc11-x86_64.dll
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
希望这有帮助
答案 11 :(得分:0)
我也遇到了同样的问题。我用phpinfo()
的输出仔细检查了php中的所有设置,一切都很好。
查看来自this question的命令,它们对于调试非常有用!
答案 12 :(得分:0)
我已经在这篇文章中尝试了所有可能的解决方案,让xdebug在Apache(http端口8000)上运行的站点上工作无济于事。然后我意外地注意到xdebug正在我在端口80上运行的另一个站点上工作。一旦我将另一个站点更改为端口80,它最终允许我调试它。
我想知道是否有一个设置可以指示Apache在其他端口上允许xdebug而不仅仅是80.我在Apache中运行了多个站点,并希望在不重新配置端口的情况下调试每个站点。以前有人有过这个问题吗?或者知道如何修复它?
答案 13 :(得分:0)
如果Netweaver/Eclipse
无法连接到XDebug
,您可能希望检查Apache
日志中是否出现类似以下内容:Cannot load Xdebug - it was built with configuration API220090626,TS,VC6, whereas running engine is API220090626,TS,VC9
[Fri Jun 01 18:38:05 2012] [notice] Child 3404: Child process is running
要解决此问题,请从XDebug
网站中选择正确版本的XDebug
二进制文件(尝试一些组合,直到您开始工作)
答案 14 :(得分:0)
如果您的配置正常,只需删除该文件: YOUR_WORKSPACE / .metadata / .plugins / org.eclipse.core.resources / .root / .markers
答案 15 :(得分:0)
该程序使用Zend脚本语言引擎: Zend Engine v2.4.0,版权所有(c)1998-2013 Zend Technologies 与Xdebug v2.2.3,版权所有(c)2002-2013,Derick Rethans
答案 16 :(得分:0)
使用Uniserver Zero XIII 13.2.0(需要MS VC12可再发行安装)和Eclipse Neon Release Candidate 3(4.6.ORC3)时遇到同样的问题。我们的网站使用phalcon,当我们发现phalcon.dll和php7.0的问题时,我们回到了php5.6。我们验证了上面的xdebug设置,添加了zend_extension = $(US_ROOTF)/php56/extensions/php_xdebug.dll--不会连接,没有断点。
在Eclipse Dialog Project的顶部发现警告属性| PHP |调试|配置工作区设置... | PHP可执行文件| PHP56(工作区默认)|编辑|调试器| “未安装XDebug扩展程序。请访问http://xdebug.org ...”。这让我们怀疑Uniserver 13.2.0 php56中的php_xdebug.dll(2.5.0)的版本。我下载了php_xdebug-2.4.1-vc11.dll,将它放在/ php56 / extensions和PRESTO中! Eclipse PHP Debugger工作正常!
答案 17 :(得分:0)
在我的情况下,CLI应用程序工作正常,但是Web应用程序被困在57%。
经过2次更改后才有效:
答案 18 :(得分:0)
这个帖子帮我解决了我在OSX上使用Eclipse的MAMP问题。从1.x版本升级到MAMP 2.1.1之后,我无法让xdebug在eclipse中工作。它悬挂在57%的水平。
phpinfo显示xdebug扩展正常加载,并且PHP或Apache日志中没有错误。
我只想在本地调试,但问题的原因是没有启用远程调试。将xdebug.remote_enable = true添加到MAMP PHP.ini模板并重新启动MAMP解决了这个问题。
答案 19 :(得分:0)
答案 20 :(得分:0)
它可能对每个人都没用,但是...在尝试调试远程主机时,始终记住DSL路由器! (或沿途的任何路由器)我花了好几个小时试图找到解决方案,当我注意到我所要做的就是激活我的Linksys端口转发(端口9000),一切都像魅力一样:)
答案 21 :(得分:0)
对我来说,这些症状是由Windows防火墙(Win7 Pro)引起的。我需要明确允许eclipse通过防火墙。我是通过“控制面板\所有控制面板项目\ Windows防火墙\允许程序”对话框完成的。
答案 22 :(得分:0)
我有同样的症状。但是,我的问题是我设置了
xdebug.remote_host = ""
我这样做是因为我正在使用apache虚拟主机来消除localhost
的需要。但是,我把它改回来了
xdebug.remote_host = "localhost"
然后更改我的apache /etc/hpppd-vhosts.conf以使localhost指向我的根目录c:\ web。
答案 23 :(得分:0)
我遇到了类似的问题,事实证明我使用的是错误的dll。希望将来可以帮助某人。
答案 24 :(得分:0)
我不知道这对你意味着什么!但是,您是否使用正确的调试参数(例如XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=12882809194391
)来点击 PHP文件 (anything.php)。
人们经常犯错误,使用调试参数点击HTML文件,导致Eclipse在xdebug会话中挂起
答案 25 :(得分:0)
是的,请检查网络/端口统计信息。在我的情况下,我在mac上使用vmware fusion,并且进程vmware-natd正在占用cpu(在我假设的开放端口上阻塞),我没有注意到。 php.ini完全没问题,不得不运行它才能让它再次运行:
sudo "/Library/Application Support/VMware Fusion/boot.sh" --restart
所以ppl首先检查你的php.ini(或xdebug.ini)文件。如果它看起来没问题this discussion,那么请检查您是否没有网络问题。
答案 26 :(得分:-1)
这是另一个博客,提到如何通过命令行验证Xdebug是否正确安装 http://allcodeverything.blogspot.com/2012/07/code-debugging-with-xdebug-and-eclipse.html
它提到了这一点 如果你想弄清楚一切是否运行良好,这里是一段很好的代码,你可以通过CLI(命令行解释器,基本上在Apache或浏览器之外;只是纯PHP)运行后输入以下内容在浏览器中:“http://localhost/dbgtest.php?XDEBUG_SESSION_START = ceable”
<?php
$address = "localhost";
$xdebug_port = 9000;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $xdebug_port) or die('Unable to bind');
socket_listen($sock);
$debug_client = socket_accept($sock);
echo "connection established: $debug_client";
socket_close($debug_client);
socket_close($sock);
?>
命令行窗口应打印类似“已建立连接:资源ID#5”的内容。