Настройка xdebug и php-fpm в Docker Desktop на Mac OS вместе с PHPStorm может быть сложной, но справившись с ней, вы сможете комфортно отлаживать свой код.
Первым шагом будет настройка Dockerfile для вашего контейнера. Вам понадобится установить необходимый компонент xdebug и включить его в конфигурации PHP.
Пример Dockerfile:
FROM php:7.4-fpm RUN pecl install xdebug && docker-php-ext-enable xdebug RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini && echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini && echo "xdebug.remote_host=docker.for.mac.localhost" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini && echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini CMD ["php-fpm"]
В данном Dockerfile мы сначала устанавливаем xdebug с помощью pecl, а затем включаем его в конфигурации PHP. Мы добавляем несколько настроек xdebug, чтобы он работал с PHPStorm и Docker Desktop на Mac OS.
После создания Dockerfile следующим шагом является создание docker-compose.yml файла для запуска контейнера. Вам понадобится настроить сервис php-fpm и прокинуть порт для отладчика xdebug.
Пример docker-compose.yml:
version: '3' services: php-fpm: build: context: . volumes: - ./src:/var/www/html ports: - 9000:9000 # порт для PHP-FPM environment: XDEBUG_CONFIG: remote_enable=1 remote_mode=req remote_port=9000 remote_host=docker.for.mac.localhost nginx: image: nginx:latest ports: - 80:80 volumes: - ./src:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
В данном примере мы создаем два сервиса – php-fpm и nginx. Мы пробрасываем порт 9000 для xdebug, чтобы можно было подключиться к отладчику, и прокидываем volume для синхронизации кода между хостом и контейнером.
После этого вам следует настроить PHPStorm для работы с xdebug и php-fpm.
1. Откройте настройки PHPStorm и перейдите в раздел "Languages & Frameworks" -> "PHP" -> "Debug".
2. Убедитесь, что настройка "Debug port" соответствует порту для xdebug (по умолчанию это 9000).
3. Откройте раздел "Languages & Frameworks" -> "PHP" -> "Servers" и нажмите "+" для добавления нового сервера.
4. Укажите имя сервера и корневую папку вашего проекта.
5. Выберите опцию "Use path mappings" и установите соответствующие пути между вашим локальным проектом и папкой внутри контейнера (обычно это /var/www/html).
6. Установите флажок "Use this server for all local files".
7. Нажмите "OK" для сохранения настроек сервера.
Теперь вы можете запустить контейнеры с помощью команды docker-compose up
из терминала и начать отладку своего кода в PHPStorm.
Для запуска отладчика в PHPStorm предлагается два наиболее популярных варианта:
1. Браузерная отладка: откройте страницу вашего приложения в браузере и добавьте параметр в URL ?XDEBUG_SESSION_START=PHPSTORM. PHPStorm автоматически перейдет в режим отладки и остановится на первой точке останова.
2. Remote CLI Debug: воспользуйтесь командой php -dxdebug.remote_enable=On -dxdebug.remote_autostart=On script.php
, где script.php – это файл, который вы хотите отладить. PHPStorm снова перейдет в режим отладки и остановится на первой точке останова.
Поздравляю, вы настроили xdebug и php-fpm в Docker Desktop на Mac OS вместе с PHPStorm! Теперь вы можете удобно отлаживать свой код в вашем контейнере.