Настройка xDebug 3 + Docker + PHPStorm для Windows 10

В этом мануале мы создадим проект с настроенными xDebug, nginX и PHP-FPM. Все файлы отображенные ниже проще достать из репозитория.

Для быстрого старта склонируйте репозиторий с github’a:

git clone https://github.com/itreviewchannel/xdebug-docker-phpstorm.git .

и запустите docker-compose:

docker-compose up

Настройка браузера

Для работы отладчика желательно установить расширение для используемого браузера, чтобы вручную не прописывать GET-параметры для старта отладки. Его нужно активировать перед отладкой.

Xdebug helper для Google Chrome.

Xdebug Helper для Firefox.

В параметрах плагина укажите «IDE KEY» как «PHPStorm».

Параметры Xdebug Helper в Google Chrome

Настройка PHPStorm

Для использования xDebug версии 3 необходимо установить PHPStorm 2020.3 и новее, так как предыдущие версии с ним не работали.

В PHPStorm’e необходимо указать наименование тестового сервера, который указан в docker-compose.yml.

Остальные настройки по умолчанию указаны верно, но на всякий случай покажу свои для этого тестового проекта.

Пример настроек соединения PhpStorm’a с Docker’ом:

Настройка Docker

Исходники проекта

/docker-compose.yml
version: '3'

services:

  webserver:
    image: nginx
    volumes:
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./:/var/www/html
    ports:
    - "80:80"
    depends_on:
      - php

  php:
    build:
      context: ./docker/php
    volumes:
      - ./:/var/www/html
      - ./docker/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
    environment:
      - PHP_IDE_CONFIG=serverName=mytestservername
/docker/nginx/default.conf
server {
    # Слушаем 80 порт.
    listen 80;
 
    # Указываем корневой каталог для запросов.
    root /var/www/html/public;
 
    # Указываем индексные файлы.
    index index.php index.html;
 
    # Определяем конфигурация для корня.
    location / {
        # Проверяем на существование файлы и используем для обработки если они найдены.
        try_files $uri $uri/ /index.php$args;
    }
 
    # Определяем конфигурацию для PHP-скриптов через регулярное выражение.
    location ~ \.php$ {
        # Парсим переменную $fastcgi_path_info для получения $fastcgi_script_name и $fastcgi_path_info.
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
 
        # Указываем адрес FastCGI-сервера.
        fastcgi_pass php:9000;
        # Указываем индексный файл.
        fastcgi_index index.php;
 
        # Активируем настройку fastcgi_params.
        include fastcgi_params;
 
        # Указываем наименование скрипта.
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        # Указываем информацию об указанном пути (который в URL).
        fastcgi_param PATH_INFO $fastcgi_path_info;
 
        # Увеличиваем время ожидания ответа, по умолчанию оно равно 60 секундам.
        fastcgi_read_timeout 300;
    }
}
/docker/php/Dockerfile
FROM php:fpm
 
RUN pecl install xdebug \
    && docker-php-ext-enable xdebug
/docker/php/xdebug.ini
[xdebug]
xdebug.mode = debug
xdebug.client_host  = host.docker.internal

Для Linux’a следует использовать IP сети из команды ifconfig.

/public/index.php (тестовый скрипт для отладки)
<?php
 
$varFirst = 100;
$varSecond = 200;
 
$varSum = $varFirst + $varSecond;
 
echo $varSum;

Полезные ссылки

10.12.2020

Категория(-и): Docker, PhpStorm, Сниппеты

#

Добавить комментарий