Search code examples
phpdockerphpstormxdebug

xdebug in phpstorm and docker


I managed to get xdebug in combination with docker and phpstorm. For http calls...IE

http://192.168.99.100:8081/?XDEBUG_SESSION_START=PHPSTORM

But when I try to run my phpunit tests, It does not connect with phpstorm

I did the correct directory mapping right in phpstorm, and also ran the following on my docker-instance export XDEBUG_CONFIG="idekey=PHPSTORM"

I also tried on my docker: export PHP_IDE_CONFIG='serverName=web.docker'and named the server config on phpstorm web.docker . still working over http but not CLI

So can I get phpstorm and xdebug working together for command line too?

here is my file: /etc/php5/cli/conf.d/20-xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_connect_back=1
xdebug.remote_host=172.17.42.1
dxdebug.remote_autostart=1

When I turn on logging, and play with the xdebug_remote_host IP adress I get

W: Remote address not found, connecting to configured address/port: localhost:9000. :-|
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:20:39

Log opened at 2015-10-13 12:22:58
I: Checking remote connect back address.
W: Remote address not found, connecting to configured address/port: 172.17.42.1:9000. :-|
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:22:58

Log opened at 2015-10-13 12:23:58
I: Checking remote connect back address.
W: Remote address not found, connecting to configured address/port: 192.168.99.100:9000. :-|
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:23:58

Solution (edit) By turning on the xdebug logging, I saw it was succesfully connecting to 192.168.99.1 so this solved the issue

xdebug.remote_host=192.168.99.1

Solution

  • Two things come to my mind right now:

    1. Is xdebug.remote_host set correctly? For the HTTP Link you provided a 192.168. address, for the way back it's a 172.17. address. Can you ping your host on that IP?

    2. In your ini file it reads:

      dxdebug.remote_autostart=1
      

      Is this just a typo here, or is that actually in your config file? Because it should read xdebug without the "d" in front of it. It should be:

      xdebug.remote_autostart=1
      

      You should only add the d when you add the option when executing the script like this:

      php -dxdebug.remote_autostart=1 script.php
      

    If that doesn't help yet, please enable the remote log by adding something like this to the config:

    xdebug.remote_log = /var/log/xdebug_remote.log
    

    maybe that'll help to find the problem.