Search code examples
phpdockerphpstormxdebug

Xdebug PhpStorm: debugging scripts started with exec("php index.php")


I'm trying to add debugging to an old project that uses exec() to start a new session asynchronously from within another PHP script:

exec("php /var/www/html/validata/index.php",$result) 

The normal PHP script is fully debugable with Xdebug but the script started with the exec command isn't because it can't map from file:///var/www/html/index.php to a local file location since it's started within CLI shell. The session started this way does trigger the debugger but can't find the file locally:

Cannot find file '/var/www/html/validata/index.php' locally.
To fix it set server name by environment variable PHP_IDE_CONFIG and restart debug session.

I've followed the instructions to add the PHP_IDE_CONFIG to the env. I've also added this to the server with 127.0.0.1 replaced with the desktop PC IP address (server is running in a docker container):

export XDEBUG_CONFIG="remote_enable=1 remote_mode=req remote_port=9000 remote_host=127.0.0.1 remote_connect_back=0"

Any pointers are greatly appreciated!


Solution

  • I've made a mistake how to refer to the server in PHP_IDE_CONFIG: export PHP_IDE_CONFIG="serverName=SomeName" should be run in the container where php runs, and SomeName should exactly match what is in PHPStorm/IntelliJ Settings > Languages & Frameworks > php > Servers > Name (not host). It's not a fqdn, just whatever is in the name field.