Bonjour à tous !
Un article très rapide car je n’ai trouvé aucun tuto pour debug avec phpstorm et la dernière version de xdebug !
Voici en « vrac » la solution que j’ai trouvé !
Config stack Docker
Dans votre image docker ajouter xdebug: (Dockerfile):
FROM composer:2.0 as composer FROM php:7.4-fpm RUN docker-php-ext-install pdo_mysql RUN pecl install apcu xdebug RUN apt-get update && \ apt-get install -y \ libzip-dev RUN docker-php-ext-install zip RUN docker-php-ext-enable apcu RUN docker-php-ext-enable xdebug WORKDIR /usr/src/app COPY --chown=1000:1000 app/ /usr/src/app COPY --from=composer /usr/bin/composer /usr/bin/composer RUN PATH=$PATH:/usr/src/app/vendor/bin:bin RUN composer install --no-scripts --prefer-dist \ && rm -rf "$(composer config cache-dir)" "$(composer config data-dir)"
Créez un fichier .ini contenant la configuration xdebug (xdebug.ini):
xdebug.client_host=host.docker.internal xdebug.idekey=PHPSTORM xdebug.start_with_request=yes xdebug.mode=debug
Dans votre stack docker-compose.dev.yaml:
version: '3.8' services: php: build: context: . dockerfile: docker/php/dev/Dockerfile restart: unless-stopped environment: PHP_IDE_CONFIG: 'serverName=localhost' volumes: - './app/:/usr/src/app' - './docker/php/dev/xdebug.ini/:/usr/local/etc/php/conf.d/xdebug-local.ini' user: ${LOCAL_USER} nginx: image: nginx:1.19.0-alpine restart: unless-stopped ports: - '${NGINX_PORT}:80' volumes: - './app/public/:/usr/src/app' - './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro' depends_on: - php
L’env PHP_IDE_CONFIG est visiblement important pour que PhpStorm se repère. On map notre fichier xdebug.ini dans la conf php du container.
Config PhpStorm
Vous devez ajouter votre CLI Interpreter, configurer les ports de debug général sur lesquelles PhpStorm va écouter, créer une configuration en mode remote debug, renseignez la clé IDE et surtout configurer le path mapping comme il faut pour le serveur utilisé dans la config remote debug.
En bref et dans mon cas en adéquation avec ma stack plus haut, en screenshots:
Pour vous faire une idée du path mapping, voici un tree de mon dossier:
.
├── app
│ ├── bin
│ ├── composer.json
│ ├── composer.lock
│ ├── config
│ ├── public
│ ├── src
│ ├── symfony.lock
│ ├── var
│ │ ├── cache
│ │ └── log
│ └── vendor
├── docker
│ ├── nginx
│ │ └── default.conf
│ └── php
│ ├── Dockerfile
│ └── dev
├── docker-compose.dev.yaml
└── docker-compose.yaml
Voilà, c’était rapide mais essentiel !
Valentin.
This post was last modified on 13/01/2021 02:56