Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I debug a PHP CLI script with xdebug?

I haven't quite figured this out. EVERY piece of documentation I've found covers how to use xdebug to debug scripts running in Apache. I need to debug a php CLI script.

So, for instance, how do I pass the XDEBUG_SESSION_START variable in to get xdebug to kick on?

I'm specifically trying to debug a CakePHP shell. So if anyone has any additional insight into that I'd be very appreciative.

Thanks.

like image 945
Laran Evans Avatar asked Dec 22 '09 16:12

Laran Evans


People also ask

How do I Debug using XDebug?

You can find it in the extension window and install it. After installation, you must reload the VSCode window. Now, again run phpinfo(); method in any PHP file to check if Xdebug is enabled or not. Now click on the debug console tab and click on add configuration.


2 Answers

There is a couple of notes about that in Xdebug's manual, like, for instance (quoting) :

export XDEBUG_CONFIG="idekey=session_name" php myscript.php 

If you are using Eclipse PDT to develop and debug your PHP scripts, there is not much difference between Apache or CLI : the configuration lloks quite the same, you just don't have to configure a web server, nor indicate an URL ; instead, you have to indicate the path to the PHP executable.

About the XDEBUG_SESSION_START variable : well, you launch the whole script in "debug-mode", so you don't have any notion of "debugging-session", I'd say.


For instance, here's what Window > Preference > PHP > PHP executables looks like for me right now, and, on the right, what I get when clicking on the Edit button of the first one :


(source: pascal-martin.fr)
   
(source: pascal-martin.fr)

And the debug configurations window :


(source: pascal-martin.fr)

And launching the debugging: it just works :


(source: pascal-martin.fr)


Hope this helps :-)

Else, what specific problem do you encounter ?

like image 134
Pascal MARTIN Avatar answered Sep 21 '22 08:09

Pascal MARTIN


If you're using bash (or similar shell), this little script might come in handy:

alias drush-debug=drd function drd {     export XDEBUG_CONFIG="idekey=cli_session"     export SERVER_NAME="developer.machine"     export SERVER_PORT="9000"     drush "$@"     unset XDEBUG_CONFIG     unset SERVER_NAME     unset SERVER_PORT }; 

or as suggested by the commentators below

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "$@"' 

This way you don't have to manually set and unset the trigger variable each time you want to debug.

like image 20
Plamen Avatar answered Sep 20 '22 08:09

Plamen