views:

1297

answers:

4

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.


Any help or suggestion appreciated, thank you in advance for your time!

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. alt text

A: 

I have problem same. I have been solved it. You try in file /etc/php5/apache2/php.ini add:

[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

in file /etc/php5/cli/php.ini add

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

Restart apache:

sudo service apache2 restart

protect4you
@protect4you - I am away from my computer right now, so I can't immediately try... will post later if it worked. However I am a bit puzzled about this solution, as you finish off your instructions with **sudo service apache2 restart** and I - as specified in the question - do *not* use apache as a webserver but nginx...
mac
Srry. In this solution i give example is apache2. But if you can try with other web service :D.When file config was changed must restart web service ( Apache, nginx ..).In solution you set need xdebug.remote_autostart = off.Why set "xdebug.remote_autostart = off". This is answer:if it is "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.
protect4you
you can read more here :http://doc.waterproof.fr/phpedit/debugging_profiling/configuration/debugger_with_xdebug
protect4you
A: 

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

"xdebug.remote_autostart = off"

And restart web service. In this example is Apache.

You can read more here: http://doc.waterproof.fr/phpedit/debugging%5Fprofiling/configuration/debugger%5Fwith%5Fxdebug

GoodLuck!

protect4you
A: 

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.

Beau
+1  A: 

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

zend_extension = /PATH_TO/xdebug.so   ## <-- NOTE the path
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_port = 9900        ## <-- Yours will be probly 9000 or other..

does the job.

So after the change,

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

This worked for me.

valk
Ensure you use zend_extension not the earlier form zend_extension_ts
lrussell