Debugging a PHP CLI script
I’m working on some code on the command line that I needed to debug. It’s on a remote machine (well, a VM that doesn’t have a GUI) and so I needed to initiate a remote debugging session from the command line to go to my local copy of Zend Studio. Thankfully, it’s pretty easy. Since I need a place to store this command so I can copy and paste it onto the CLI I figured I’d simply blog about it. Simply execute this command prior to executing your PHP script.
export QUERY_STRING="start_debug=1&debug_stop=1&debug_fastfile=1& debug_coverage=1&use_remote=1&send_sess_end=1&debug_session_id=2000& debug_start_session=1&debug_port=10137&debug_host=192.168.0.254"
The only thing you will need to change is the debug_host setting and perhaps debug_port. Run your CLI script and the debugger will attempt to connect to your local Zend Studio instance. If you want to discontinue debugging you execute this command.
unset QUERY_STRING

I would suggest adding all that to a php-debug shell command that wraps the execution, makes it easier to fire it up. Like i did here: http://blog.rafaeldohms.com.br/2011/05/13/debugging-phpunit-tests-in-netbeans-with-xdebug/
Great tip!
- spam
- offensive
- disagree
- off topic
LikeI use back tics in my export to use the ip that I've ssh'd in from as the debug host --
debug_host=`expr "$SSH_CLIENT" : '\(^[0-9.]*\)'`
or for xdebug
remote_host=`expr "$SSH_CLIENT" : '\(^[0-9.]*\)'`
also, if you use phpStorm, be sure to export a SERVER_NAME and REQUEST_URI if you want to do cli debugging
- spam
- offensive
- disagree
- off topic
Likestm Sure, if you want to be all professional about it :-)
- spam
- offensive
- disagree
- off topic
Likestm Though, IIRC, the use of expr may not always work on all Linux distros as it's not part of POSIX. Probably doesn't matter much, though.
- spam
- offensive
- disagree
- off topic
Likekschroeder there is probably a more POSIX way of doing it. it is a pretty simple regex
- spam
- offensive
- disagree
- off topic
Like