PHP Remote CLI Script Debugging with PHPStorm
PHPStorm is one of the best IDE’s to develop in PHP. I recently came across tons complex php cli scripts and needed a way to debug them.
Most important things to configure are
- Set up xdebug correctly on the remote server. Dont use xdebug.remote_connect_back. Instead use xdebug.remote_host
- Xdebug must be set up for php cli – check with the command php -i | grep xdebug and you should see many entries
- Set up deployment path mapping correctly in your project settings – a lot of people miss this and wonder why debug is not working
- Check your firewalls on both machines, make sure required ports are open, especially port 9000
- Check debugger settings in phpstorm and make sure you have break at first line set up
In the PHPStorm tutorial, it asks you to set up SSH tunnel. If you are not doing tunneling, you should set these environment variables on the remote server
Eg, if my remote server is centos, i will set these 2 variables
export XDEBUG_CONFIG="idekey=PHPSTORM"; export PHP_IDE_CONFIG="serverName=myDeploymentServerName";
serverName is the name of the server you set up for deployment in phpstorm deployment settings
these variables are valid for the session, if you logout and log in, you have to set them again.
You can add these to your .bashrc file in your home folder to make them permanent
In case you want to use xdebug.remote_connect_back, you might have to run your php scripts on the command line with additional args like this
php -dxdebug.remote_enable=1 -dxdebug.remote_host=10.0.1.2 -dxdebug.remote_connect_back=0 /path-to-php-script