Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Xdebug and PhpStorm with Docker container on Windows

I am trying to make Xdebug work for Docker container on Windows with PhpStorm. I read different articles and other threads, but still it's not working.

Inside docker-compose.yaml I have following configuration for my app container:

version: "3.7"
services:

  #PHP Service
  app:
    build:
      args:
        user: user
        uid: 1000
      context: ./
      dockerfile: docker/php/Dockerfile
    image: rpg
    container_name: rpg-app
    restart: unless-stopped
    tty: true
    environment:
      SERVICE_NAME: app
      SERVICE_TAGS: dev
      PHP_IDE_CONFIG: serverName=RpgServer
    working_dir: /var/www
    command: /var/www/docker/php/application-init.sh
    volumes:
      - ./:/var/www
      - ./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
    networks:
      - rpg-app-network
    depends_on:
      - db

  ...

  #Nginx Service
  nginx:
    image: nginx:1.17-alpine
    container_name: rpg-nginx
    restart: unless-stopped
    tty: true
    ports:
      - "8080:80"
      - "443:443"
    volumes:
      - ./:/var/www
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d/
    networks:
      - rpg-app-network
    depends_on:
      - app

enter image description here

Using phpinfo() I get following php configuration: enter image description here

enter image description here

enter image description here

And I have the following PhpStorm configuration:

Servers
enter image description here

Debug
enter image description here

DBGp Proxy (Don't really think is relevant) enter image description here

And PHP Remote Debug enter image description here

I use Chrome's Xdebug Helper plugin to send the session key enter image description here

And in phpinfo() I can see that the PHP receives the Xdebug session key:

enter image description here enter image description here

I am listening in the PhpStorm for Xdebug connection (with breakpoints throughout the code): enter image description here enter image description here

I run the application in the browser with Xdebug Helper enabled .

Yet. There is no blocking you would expect from breakpoints and no callback to PhpStorm.

If I try to use Debugger Configuration validation in PhpStorm I get the following: enter image description here

like image 954
Michael Chekin Avatar asked Aug 01 '26 03:08

Michael Chekin


1 Answers

Thanks to LazyOne's I took another look into the configuration and found out that the Step Debugger is disabled.enter image description here

I install Xdebug in the following way in my php-fpm Dockerfile:

# Install xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug

And this is my original Xdebug configuration:

[xdebug]
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_connect_back=0
xdebug.remote_host=host.docker.internal
xdebug.remote_port=9001
xdebug.idekey=PHPSTORM
xdebug.remote_log=/var/www/storage/logs/xdebug.log
xdebug.remote_mode = req

I added

xdebug.mode = debug

After rerunning docker-compose up I started receiving a Notice in container logs:

rpg-app  | NOTICE: PHP message: Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(

I found this thread Xdebug: [Step Debug] Could not connect to debugging client

And added:

xdebug.client_host=host.docker.internal
xdebug.client_port=9001

Getting:

[xdebug]
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_connect_back=0
xdebug.remote_host=host.docker.internal
xdebug.remote_port=9001
xdebug.idekey=PHPSTORM
xdebug.remote_log=/var/www/storage/logs/xdebug.log
xdebug.remote_mode = req
xdebug.mode = debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9001

Now everything works! :)

Edit: Following LazyOne's comment I updated to Xdebug v3 configuration settings. The result is:

[xdebug]

xdebug.idekey=PHPSTORM

xdebug.mode = debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9001

xdebug.log=/var/www/storage/logs/xdebug.logs
like image 192
Michael Chekin Avatar answered Aug 02 '26 17:08

Michael Chekin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!