52

我正在尝试让 xdebug 与 eclipse (3.5) / php (在 xampp windows 7 上) 一起工作。我已经验证在 php 中启用了 xdebug - 我有精美的输出,我的 phpinfo 显示了所有 xdebug 的东西。我开启了远程调试,并在我的 Eclipse 机器上输入了局域网 IP 地址。

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

但是,在 Eclipse 调试透视图中,它显示 'launching myproject' 57% 'waiting for xdebug session'。它永远坐在那里。

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

我尝试打开隐式刷新。

有任何想法吗?

4

26 回答 26

63

我也遇到了这个问题,我在php.ini文件中缺少这一行:

xdebug.remote_enable = On
于 2010-10-12T08:45:15.250 回答
14

确保您在以下位置使用ABSOLUTE路径定义了 zend_extention php.ini

例如: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 设置:

Eclipse 中的 XDEBUG 设置

于 2011-02-25T00:19:29.790 回答
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 必须作为 Zend 扩展加载到 Unknown 的第 0 行
警告:Xdebug 必须作为 Zend 扩展加载到Unknown的第0

如果这样做,请打开 php.ini 文件并使用“;”进行注释 该extension=php_xdebug-2.dll行:

;extension=php_xmlrpc.dll
extension=php_xsl.dll
**;extension=php_xdebug-2.dll**
;/PHPExt
于 2011-05-11T12:06:27.960 回答
6

经过 3 个小时的斗争并在论坛上尝试了所有解决方案后,我发现简单的技巧是删除引号,同时在php.inizend_extension中指定Xdebug dll 的路径。我在 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 > Preferences > PHP > Debug > Xdebug 中的端口匹配。另外,在编辑 php.ini 后重新启动 apache。

一旦我将它添加到 php.ini,一切都像冰淇淋一样工作。

于 2012-01-04T04:40:15.810 回答
6

Zend Studio 也有同样的问题。我注意到 xdebug 会话没有正确启动。我将这个字符串传递给 url 一次,从那时起它就起作用了。

http://localhost/myalias/?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=13750956767461

我确定这是IDE中某处的配置问题。

于 2013-07-30T06:46:16.887 回答
3

我意识到 TCP 端口正在使用中,这就是它挂起的原因。我更改了 php.ini 和 eclipse 设置中的端口。

于 2010-05-27T12:06:58.070 回答
2

检查 Eclipse 的 Web 浏览器设置是否正确。

窗口/首选项/常规/Web 浏览器/外部 Web 浏览器/编辑设置

就我而言,外部 Web 浏览器二进制文件的路径不正确。它说“/usr/bin/mozilla”而不是“/usr/bin/firefox”。不知道这个设置是怎么来的,但是在改变它之后,firefox浏览器窗口终于出现了。

于 2012-09-13T14:31:00.793 回答
1

我查看了 apache 日志,并且有很多行包含找不到文件错误。

运行 -> 调试配置 -> PHP 网页 -> Your_configuration

我取消选中auto generate并将文件名设置为index.php.

似乎如果出现任何阻止日食正常运行的错误会导致这种“等待会话”

于 2014-07-27T10:01:17.560 回答
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"

希望这可以帮助

于 2017-03-01T08:13:17.120 回答
1

我有同样的问题。我的配置与您的相同,除了xdebug.remote_enable = Onphp.ini文件中还添加以下内容:

xdebug.remote_connect_back=1

这启用了多主机远程调试,作为替代方案,您可以定义主机 IP。

xdebug.remote_host=IP_ADDRESS
于 2015-10-14T14:58:02.340 回答
0

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

该程序使用 Zend 脚本语言引擎:Zend Engine v2.4.0,版权所有 (c) 1998-2013 Zend Technologies with Xdebug v2.2.3,版权所有 (c) 2002-2013,Derick Rethans

于 2014-02-21T08:10:39.077 回答
0

在我的情况下,CLI 应用程序运行良好,但 Web 应用程序卡在了 57%。

它在 2 次更改后起作用:

  1. 将服务器调试器设为 XDebug
  2. 自动生成 URL 真。
于 2012-08-01T11:21:13.580 回答
0
  1. 上述输入很有用。我检查了 phpInfo() 中的 xdebug 参数值,发现尽管我设置为 1 或 On,但 auto_trace 和 remote_enable 都关闭了。所以我做到。然后远程工作!谢谢。
  2. 请注意,现在您可以通过配置各种调试配置从 Eclipse 中启动远程调试会话,或者/每当您在 Eclipse 之外启动此类配置的应用程序时,您将在 Eclipse 处收到一个接受或不接受调试会话的问题。因此,如果您在与 Eclipse UI 不同的机器上,您可能会发现对应用程序的调用无缘无故超时。实际上,无论 Eclipse 会话在哪里,都会有一个是 - 否对话框
于 2012-04-28T14:01:00.120 回答
0

它可能不是对每个人都有用,但是……在尝试调试远程主机时,请始终记住 DSL 路由器!(或沿途的任何路由器)我花了几个小时试图找到一个解决方案,当我注意到我所要做的就是在我的 Linksys 上激活端口转发(端口 9000)并且一切都像一个魅力:)

于 2011-11-06T22:36:27.383 回答
0

是的,检查网络/端口统计信息。就我而言,我在mac上使用vmware fusion,进程vmware-natd占用了cpu(我假设阻塞了一个开放端口),我没有注意到。php.ini 完全没问题,必须运行它才能让它再次工作:

sudo "/Library/Application Support/VMware Fusion/boot.sh" --restart

因此,请先检查您的 php.ini(或 xdebug.ini)文件。如果这个讨论看起来没问题,那么请检查您是否有网络问题。

于 2010-06-17T23:14:29.717 回答
0

我也遇到了同样的问题。我用 php 的输出仔细检查了 php 中的所有设置,phpinfo()一切都很好。

允许 Java(TM) Platform SE 二进制文件通过防火墙就成功了。

查看this question中的命令,它们对调试非常有用!

于 2014-12-14T22:04:43.077 回答
0

我有同样的症状。但是,我的问题是我设置 xdebug.remote_host = "" 我这样做是因为我使用 apache 虚拟主机来消除对localhost. 但是,我已将其更改回 xdebug.remote_host = "localhost" 然后更改我的 apache/etc/hpppd-vhosts.conf 以使 localhost 指向我的根目录 c:\web。

于 2011-10-02T21:52:28.337 回答
0

对我来说,这些症状是由 windows 防火墙(Win7 Pro)引起的。我需要明确允许 Eclipse 通过防火墙。我是通过“控制面板\所有控制面板项\Windows 防火墙\允许的程序”的对话框完成的。

于 2011-10-19T21:02:38.110 回答
0

我遇到了类似的问题,结果发现我使用了错误的 dll。希望对将来的人有所帮助。

于 2011-07-18T01:33:37.027 回答
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 解决了该问题。

于 2012-07-26T20:43:41.220 回答
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(尝试一些组合,直到你让它工作)

于 2012-06-02T04:36:40.100 回答
0

我不知道这对你意味着什么!但是,您是否使用正确的调试参数访问了一个PHP 文件 (anything.php)XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=12882809194391 ,例如.

人们经常在使用调试参数访问 HTML 文件时出错,这会导致 Eclipse 在 xdebug 会话中挂起

于 2010-10-28T15:52:14.617 回答
0

如果您的配置没问题,只需删除文件:YOUR_WORKSPACE/.metadata/.plugins/org.eclipse.core.resources/.root/.markers

于 2016-03-04T08:51:50.077 回答
0

我已经在这篇文章中尝试了所有可能的解决方案,以使 xdebug 在运行在 Apache(http 端口 8000)上的站点上工作,但无济于事。然后我意外地注意到 xdebug 正在另一个我在端口 80 上运行的站点上工作。当我将另一个站点更改为端口 80 时,它终于允许我调试它。

我想知道是否有一个设置可以指示 Apache 允许在 80 以外的其他端口上进行 xdebug。我有多个在 Apache 中运行的站点,并且希望在不必重新配置端口的情况下调试每个站点。以前有人遇到过这个问题吗?或知道如何解决?

于 2015-09-08T00:28:43.497 回答
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 对话框项目顶部发现警告 | 属性 | 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 调试器有效!

于 2016-11-09T21:08:12.013 回答
-1

Here is another blog which mentions how to verify if Xdebug is properly installed or not via the command line http://allcodeverything.blogspot.com/2012/07/code-debugging-with-xdebug-and-eclipse.html

It mentions this If you want to figure out if everything worked well, here is a nice piece of code that you'll run through the CLI (command-line interpreter, basically outside of Apache or a browser; just pure PHP) after you have typed the following in your browser: "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);
?>

The command-line window should print something like "connection established: Resource id #5".

于 2012-12-06T19:12:21.217 回答