使用PHP fastcgi和eclipse进行Xdebug配置?

mac*_*mac 8 php eclipse fastcgi xdebug eclipse-pdt

我一直在使用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
Run Code Online (Sandbox Code Playgroud)
  • 我看到xdebug正在工作(例如,如果我做了一个var_dump()我得到它的xdebug版本,而不是普通的PHP版本)
  • 我无法从eclipse进行交互式调试:浏览器打开并完全加载包含典型URL的页面...?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=...,但程序执行不会在断点处停止
  • 在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
Run Code Online (Sandbox Code Playgroud)

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


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

替代文字

Max*_*nce 14

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

xdebug.remote_port=9001
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢!这解决了我在Windows/IIS7上使用Netbeans进行远程调试的问题.我看到我使用php -i从命令行看到我对php.ini的更改,但是phpinfo()显示默认设置,尽管启用了xdebug.可能PHP正在加载它,但Xdebug在发现其端口正在使用而不进行配置更改时正在退出. (2认同)
  • 谢谢Effing很多!!! 虽然我使用我的php-fpm和nginx通过套接字连接,但将默认端口更改为9001解决了我的问题!我猜php-fpm仍然占用端口,虽然它配置为监听套接字? (2认同)

val*_*alk 7

Beau说的是正确的(因为我是新人,所以不能投票!).

一般来说,添加到/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..
Run Code Online (Sandbox Code Playgroud)

做的工作.

所以改变之后,

./php-fastcgi stop
./php-fastcgi start
Run Code Online (Sandbox Code Playgroud)

这对我有用.