8

一年多来,我一直在将 eclipse-pdt 与 xdebug 和 apache 结合使用而没有问题。事情完美无缺,我可以在 eclipse 中进行所有我想要的交互式调试(使用我自己的机器作为服务器)。

现在我从 apache 切换到 nginx(因此 PHP 现在不是作为 Apache 服务运行,而是作为 fast-cgi 运行)并且我找不到配置 eclipse 以与 xdebug 很好地配合使用的方法。我不确定问题出在 xdebug 还是 eclipse(或两者)上。

在 Eclipse 配置中,我已经将 PHP 配置文件的引用更改为/etc/php5/cli/php.ini.


尝试使用 php.ini 版本 1

使用以下php.ini文件

zend_extension=/usr/lib/php5/20060613/xdebug.so
  • 我看到 xdebug 正在工作(例如,如果我这样做,var_dump()我会得到它的 xdebug 版本,而不是普通的 PHP 版本)
  • 我无法从 Eclipse 进行交互式调试:浏览器打开并使用包含 的典型 URL 完全加载页面...?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=...,但程序执行不会在断点处停止
  • 在 Eclipse 的右下角,我看到一条可疑消息:“Launching =put_the_name_of_my_project_here=: 57%”“refreshing workspace”交替出现。

尝试使用 php.ini 版本 2

如果我使用该文件的其他版本(在我切换到 nginx 之前它一直有效):

zend_extension=/usr/lib/php5/20060613/xdebug.so
xdebug.remote_enable=On
xdebug.remote_autostart=On
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req

我根本无法访问我网站的任何页面。


PS:我机器上的其他数据: -操作系统: GNU/Linux - Ubuntu 9.10 64 位。- PHP: 5.2.10-2ubuntu6.3 和 Suhosin 补丁 0.9.7;Zend Engine v2.2.0,版权所有 (c) 1998-2009 Zend Technologies with Xdebug v2.0.4 - Eclipse:见截图。

替代文字

4

5 回答 5

16

xdebug 和 FastCGI 使用相同的默认端口 (9000)。在 php.ini 文件中更改 XDebug 的端口,如下所示:

xdebug.remote_port=9001

并更新您的 IDE 设置以使用 9001。

于 2011-07-25T10:45:37.487 回答
7

博说的是正确的(因为我是新来的,所以无法投票!)。

通常,将以下行添加到 /etc/php5/cgi/php.ini(或定位 php.ini)

zend_extension = /PATH_TO/xdebug.so   ## <-- NOTE the absolute path, not relational (For ex on Windows: "C:\nginx-1.9.13\php\ext\php_xdebug-2.6.0RC2-7.0-vc14-nts.dll")
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_port = 9900        ## <-- Yours will be probly 9000 or other..

做这项工作。

所以改变之后,

./php-fastcgi stop
./php-fastcgi start

这对我有用。

于 2010-07-23T22:57:57.470 回答
2

尝试重新启动您的 php.ini。因为你有php-fastcgi,重启nginx好像不行。当我重新启动整个服务器时,更改生效。

于 2010-03-14T02:03:12.330 回答
1

我有同样的问题并解决了它。
在文件中/etc/php5/apache2/php.ini添加:

[xdebug] xdebug.remote_enable=On
xdebug.remote_autostart=off
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req


在文件中/etc/php5/cli/php.ini添加:

zend_extension=/usr/lib/php5/20060613/xdebug.so
xdebug.remote_enable=On
xdebug.remote_autostart=off
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req


重启阿帕奇:

sudo service apache2 restart
于 2009-12-15T08:51:25.767 回答
0

解决方案中的问题是“ xdebug.remote_autostart = on ”。如果您在文件配置中设置“ xdebug.remote_autostart = on ”。这将强制 Xdebug 为在该服务器上完成的每个请求启动一个调试会话,而无需在请求中指定需要一个调试会话。

你需要改变

xdebug.remote_autostart = 关闭

并重启网络服务。在这个例子中是 Apache。

你可以在这里阅读更多:http: //doc.waterproof.fr/phpedit/debugging_profiling/configuration/debugger_with_xdebug

祝你好运!

于 2009-12-22T09:33:32.563 回答