Отладка PHP-приложений в Docker: подробное руководство

Отладка PHP-приложений — важнейшая часть процесса разработки, поскольку она позволяет разработчикам эффективно выявлять и устранять проблемы. Docker, популярная платформа контейнеризации, предоставляет удобный способ создания воспроизводимых сред разработки. В этой статье мы рассмотрим различные методы отладки PHP-приложений в Docker с помощью Xdebug, мощного инструмента отладки.

Метод 1: удаленная отладка Xdebug с помощью PhpStorm
Для начала мы рассмотрим, как настроить удаленную отладку Xdebug с помощью PhpStorm, популярной PHP IDE. Выполните следующие действия:

  1. Установить расширение Xdebug в образ PHP Docker.

    FROM php:7.4-fpm
    RUN pecl install xdebug
    RUN docker-php-ext-enable xdebug
  2. Настройте Xdebug в контейнере PHP Docker.

    [Xdebug]
    zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so
    xdebug.remote_enable=1
    xdebug.remote_autostart=1
    xdebug.remote_host=docker.host.internal
    xdebug.remote_port=9000
  3. Настройте PhpStorm для удаленной отладки.

    • Откройте PhpStorm, перейдите в «Настройки» ->«Языки и платформы» ->«PHP» ->«Отладка».
    • Установите «Порт отладки» на 9000.
    • Включите параметр «Может принимать внешние подключения».
    • Создайте новую конфигурацию сервера для Docker.
    • Установите для параметра «Хост» значение docker.host.internal, а для параметра «Порт» — значение 80.
    • Установите «Отладчик» на Xdebug.
  4. Запустите контейнер Docker и запустите приложение PHP.

  5. Установите точки останова в своем PHP-коде в PhpStorm и запустите приложение для начала отладки.

Метод 2. Удаленная отладка Xdebug с помощью кода Visual Studio
Если вы предпочитаете использовать код Visual Studio в качестве среды IDE, вы можете настроить удаленную отладку Xdebug, выполнив следующие действия:

  1. Установите расширение PHP Debug в Visual Studio Code.

  2. Настройте Xdebug в контейнере PHP Docker аналогично предыдущему методу.

  3. Обновите конфигурацию кода Visual Studio, добавив следующее в .vscode/launch.json:

    {
     "version": "0.2.0",
     "configurations": [
       {
         "name": "Docker Xdebug",
         "type": "php",
         "request": "launch",
         "port": 9000,
         "pathMappings": {
           "/var/www/html": "${workspaceFolder}"
         },
         "ignore": ["/vendor//*.php"]
       }
     ]
    }
  4. Запустите контейнер Docker и запустите приложение PHP.

  5. Установите точки останова в своем PHP-коде в Visual Studio Code и запустите приложение для начала отладки.

Метод 3: профилирование Xdebug
Xdebug также предоставляет возможности профилирования для анализа производительности вашего PHP-приложения. Выполните следующие действия:

  1. Обновите конфигурацию Xdebug в контейнере PHP Docker:

    [Xdebug]
    zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir=/tmp/profiler
  2. Запустите контейнер Docker и запустите приложение PHP.

  3. Выполните действия в PHP-приложении, которое вы хотите профилировать.

  4. Проанализируйте созданные выходные файлы профилировщика, чтобы выявить узкие места в производительности.

Отладка PHP-приложений в Docker с помощью Xdebug может значительно улучшить рабочий процесс разработки. Независимо от того, выберете ли вы PhpStorm или Visual Studio Code в качестве своей IDE, методы, описанные в этой статье, предоставляют мощные возможности отладки. Xdebug не только позволяет вам пошагово выполнять код и проверять переменные, но также позволяет выполнять профилирование для анализа производительности. Используя эти методы, вы можете эффективно отлаживать и оптимизировать свои PHP-приложения в Docker.