使用 PHP fastcgi 和 eclipse 进行 Xdebug 配置?
我已经将 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 进行交互式调试:浏览器打开并使用包含
...?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=...< 的典型 URL 完全加载页面/code>,但程序执行不会在断点处停止
- 在 Eclipse 的右下角,我看到一条可疑消息:“Launching =put_the_name_of_my_project_here=: 57%” 与 交替出现“刷新工作空间”之一。
尝试使用 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 和 Xdebug v2.0.4 - Eclipse:参见屏幕截图。
I have been using eclipse-pdt in conjunction with xdebug and apache without problems, for over one year. Things worked flawlessly and I could do all the interactive debugging I wanted from within eclipse (using my own machine as a server).
Now I switched from apache to nginx (and therefore PHP runs now not as an Apache service but as fast-cgi) and I can't find a way to configure eclipse to work nicely with xdebug. I am neither sure if the problem is with xdebug or with eclipse (or both) to be sure.
In the eclipse configuration I already changed the reference to the PHP configuration file to /etc/php5/cli/php.ini
.
Attempts with php.ini version 1
With the following php.ini
file
zend_extension=/usr/lib/php5/20060613/xdebug.so
- I see that xdebug is working (for example if I do a
var_dump()
I get the xdebug version of it, not the plain PHP one) - I can't have the interactive debugging from eclipse: the browser opens up and loads the page completely with the typical URL containing
...?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=...
, but the program execution does not stop at breakpoints - In the bottom-right corner of eclipse I see a suspicious message: "Launching =put_the_name_of_my_project_here=: 57%" that alternates with the "refreshing workspace" one.
Attempts with php.ini version 2
If I use this other version of the file (which is what it worked until I switched to 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
I can't access any page of my sites at all.
PS: Additional data on my machine:
- OS: GNU/Linux - Ubuntu 9.10 64 bit.
- PHP: 5.2.10-2ubuntu6.3 with Suhosin-Patch 0.9.7; Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies with Xdebug v2.0.4
- Eclipse: see screenshot.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
xdebug 和 FastCGI 使用相同的默认端口 (9000)。像这样更改 php.ini 文件中的 XDebug 端口:
并更新 IDE 设置以使用 9001。
xdebug and FastCGI use the same default port (9000). Change the port of XDebug in your php.ini file like this:
and update your IDE settings to use 9001.
博说的是正确的(因为我是新人,所以无法投票!)。
一般来说,添加到 /etc/php5/cgi/php.ini (或找到 php.ini)类似的行就
可以完成工作。
所以改变之后,
这对我有用。
What Beau said is correct (couldn't vote since I'm new!).
Generally, addging to /etc/php5/cgi/php.ini (or locate php.ini) the lines like
does the job.
So after the change,
This worked for me.
尝试重新启动你的 php.ini。因为你有 php-fastcgi,所以重新启动 nginx 似乎不起作用。当我重新启动整个服务器时,更改生效。
Try restarting your php. Because you have php-fastcgi, restarting nginx doesn't seem to do it. When I rebooted my whole server the change took effect.
我遇到了同样的问题并解决了。
在文件
/etc/php5/apache2/php.ini
中添加:在文件
/etc/php5/cli/php.ini
中添加:重新启动阿帕奇:
I had the same problem and solved it.
In file
/etc/php5/apache2/php.ini
add:In file
/etc/php5/cli/php.ini
add:Restart Apache:
解决方案中的问题是“xdebug.remote_autostart = on”。
如果您在文件配置中设置“xdebug.remote_autostart = on”。这将强制 Xdebug 为该服务器上完成的每个请求启动调试会话,而不必在请求中指定需要调试会话。
你需要改变
并重新启动Web服务。
在此示例中是 Apache。
您可以在这里阅读更多信息: http://doc.waterproof.fr/phpedit/debugging_profiling/配置/debugger_with_xdebug
祝你好运!
Problem in solution is "xdebug.remote_autostart = on".
If you set in file config "xdebug.remote_autostart = on". This will force Xdebug to start a debug session for every request that is done on this server, without having to specify in the request that a debug session is wanted.
You need change
And restart web service.
In this example is Apache.
You can read more here: http://doc.waterproof.fr/phpedit/debugging_profiling/configuration/debugger_with_xdebug
GoodLuck!