My problem is that xdebug doesn't work when I start listening port. I think PhpStorm can't link with xdebug. I just get debugger panel variables are not available. It's looks like xdebug have not correct settings.
Software and versions used:
Ubuntu 16.04 LTS
Docker v 17.06
docker-compose 1.15
So I was trying many times setup xdebug + Docker + PhpStorm but cannot do it. I've read many tutorials but nothing haven't helped me.
My docker-compose.yml
looks like this:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
restart: on-failure
volumes:
- "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
- "./etc/ssl:/etc/ssl"
- "./project:/var/www/html/project"
depends_on:
- php
- db
php:
image: nanoninja/php-fpm
restart: on-failure
volumes:
- "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- "./project:/var/www/html/project"
db:
image: mysql
container_name: ${MYSQL_HOST}
restart: on-failure
env_file:
- ".env"
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
ports:
- "8988:3306"
volumes:
- "./data/db/mysql:/var/lib/mysql"
My xdebug.ini
is:
xdebug.default_enable=0
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0
xdebug.idekey="PHPSTORM"
xdebug.profiler_enable=0
xdebug.remote_host=localhost
PhpStorm settings:
Docker on Linux allows Xdebug to automatically connect back to the host system so you can just set xdebug.remote_connect_back=1
and leave out the xdebug.remote_host
in your xdebug.ini
.
I found out solution how to run xdebug.
1) First of we need create a new static route that will based on your network device. For create new static route: run in terminal ifconfig
and found out the exists network device. In my situation name of device will be as
wlp4s0
2) Go ahead. Let's begin create the static route. In terminal run command like this:
> sudo ip addr add 10.254.254.254/24 brd + dev wlp4s0 label wlp4s0:1
3) Now if you run again ifconfig
you'll see new static route:
4) Update
xdebug.ini
file add:
xdebug.remote_host=10.254.254.254
5) Update docker.compose.yml
file:
in php
section add:
environment:
PHP_IDE_CONFIG: "serverName=project-docker"
PHP_XDEBUG_ENABLED: 1
XDEBUG_CONFIG: remote_host=10.254.254.254
6) The last thing is update phpstorm settings.
Server settings: Remote debug config: 7) And profit xdebug is working:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With