I tried all the tutorials I found on the internet and still can’t use a simple break point in PhpStorm using docker toolbox…
I currently have this inside my Dockerfile
:
# Install xdebug
RUN pecl install xdebug;
docker-php-ext-enable xdebug;
echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
echo "xdebug.remote_host=192.168.99.100" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
echo "xdebug.idekey=PHPSTORM" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
Xdebug gets installed and configured correctly (php -i
output):
xdebug.remote_autostart => On => On
xdebug.remote_connect_back => Off => Off
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => 192.168.99.100 => 192.168.99.100
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9001 => 9001
xdebug.remote_timeout => 200 => 200
xdebug.idekey => PHPSTORM => PHPSTORM
In my PhpStorm configuration I have the following:
Proxy:
The blurred items are Username
and project name
.
I have 2 folders in a project, one called docker
and holds all the docker files and one site
, that holds all the site files.
The configuration for my docker-compose is the following:
version: '3'
services:
application:
image: project_image:latest
environment:
- C_UID=${C_UID:-1000}
- C_GID=${G_UID:-1000}
- DEVELOPMENT=${DEVELOPMENT:-1}
- ~/.ssh:/var/www/.ssh
- ~/.composer:/var/www/.composer
env_file:
- .env
volumes:
- ${APPLICATION:-../site}:/phpapp
ports:
- 9001:9001
nginx:
image: dockerwest/nginx-laravel:${NGINXVERSION:-stable}
environment:
- VIRTUAL_HOST=${BASEHOST:-project_name.docker},${EXTRAHOSTS}
volumes:
- ${APPLICATION:-../site}:/phpapp
links:
- application
ports:
- 80:80
Anyone a clue on what I’m doing wrong here?
When I try to de telnet 192.168.99.100 9001
, the connection can’t be made, port 9000
, neither, but port 80
gives me a good response.
Anyone who has an idea what’s going on here?
Advertisement
Answer
Xdebug needs to open a connection to PhpStorm. You don’t need the ports exposed in Docker, or do anything with the Xdebug proxy. The telnet needs to be done from within your docker container to PhpStorm. The IP address in xdebug.remote_host
, needs to be the IP address of your IDE, and not the IP address of your docker container (where HTTP/Apache listens on port 80).