Confidence Confidence - 22 days ago 9
PHP Question

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

Answer

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.