eclipse xdebug会话永远不会完成

时间:2010-03-03 20:12:00

标签: php eclipse xampp xdebug

我试图让xdebug使用eclipse(3.5)/ php(在xampp windows 7上)。我已经验证xdebug已在php中启用 - 我有精彩的输出,我的phpinfo显示所有xdebug的东西。我有远程调试,并在我的eclipse机器上输入了lan ip地址。

当我告诉eclipse进行调试时,它会启动浏览器并传递调试URL参数。看起来不错。

然而,在eclipse调试透视图中,它显示'启动myproject'57%'等待xdebug会话'。它永远坐在那里。

我已经关闭了两台机器上的Windows防火墙。

我尝试过隐式刷新。

有什么想法吗?

27 个答案:

答案 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()检查
  • 防火墙不会阻止默认的9000端口或Eclipse。
  • 另一个应用程序未使用该端口(从命令行执行:netstat -an |find /i "listening"

如果您需要在php.ini中设置不同的端口:

xdebug.remote_enable = on
xdebug.remote_port = XXXX 

并更正Eclipse中的Xdebug设置:

XDEBUG settings in Eclipse

答案 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)

检查此链接:

http://xdebug.org/docs/remote

有一个关于chrome和firefox的新插件的会话,它们工作正常。

答案 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中的所有设置,一切都很好。

通过防火墙允许Java(TM)Platform SE二进制文件可以解决问题。

查看来自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)

在eclipse设置之前,检查以下内容在phpinfo函数中是否可见。

该程序使用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次更改后才有效:

  1. 将服务器调试器设为XDebug
  2. 自动生成网址true。

答案 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)

  1. 以上输入很有用。我检查了phpInfo()中的xdebug参数值,发现尽管我的设置为1或On,auto_trace和remote_enable都关闭了。所以我做到了真正的。然后远程工作!感谢。
  2. 注意,现在您可以通过配置各种调试配置来启动Eclipse中的远程调试会话,或者每当您在Eclipse之外启动此类已配置的应用程序时,您将在Eclipse处获得一个接受或不接受调试会话的问题。因此,如果您使用的是与eclipse UI不同的计算机,您可能会发现对您的应用程序的调用正在无缘无故地超时。实际上,只要Eclipse会话
  3. ,就会有一个yes - no对话框

答案 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”的内容。