docker — отделяет Xdebug от контейнеров php-fpm и nginx

Я хотел отделить все свои инструменты разработки от основных контейнеров php-fpm и nginx. Таким образом, у меня есть в основном 3 контейнера, названные как PHP-FPM работает на порту 9000, Nginx на порт 80 и DEV-инструменты. Я установил xdebug, composer и т. Д. В свой контейнер dev-tools, но я не уверен, как настроить xdebug так, чтобы он работал с контейнером php-fpm и мог отлаживать мой веб-сайт? Второй вопрос: нужен ли xdebug php-cli или php-fpm для запуска самого себя?

# Dev-инструменты

FROM php:7.2-cli-alpine

# Install the PHP extensions we need
RUN set -ex \
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin -- --filename=composer.phar \
&& apk add --no-cache git \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug

0

Решение

xdebug использует порт 9000 по умолчанию конфликтует с портом PHP-FPM.

Вам нужно будет изменить назначенный порт вашей конфигурации пула PHP-FPM или xdebug в php.ini. Я рекомендую обновить конфигурацию PHP-FPM для прослушивания другого порта, так как его меньше настраивать для отладки с помощью xdebug.

Если вы хотите изменить порт в PHP-FPM.

/php-fpm.d/pool.conf

[pool]
listen = 127.0.0.1:9001

Обновите свою конфигурацию NGINX соответствующим образом, чтобы использовать новый порт.

В противном случае, если вы хотите изменить порт xdebug в PHP.

php.ini

[xdebug]
xdebug.remote_port=9001

Обновите программное обеспечение отладки (редактор PHP / IDE) и конфигурацию брандмауэра до нового порта. В качестве альтернативы используйте туннель SSH для пересылки нового удаленного порта 9001 на локальный порт по умолчанию 9000


Что касается вашего второго вопроса

xdebug работает только как расширение PHP (php-fpm), если он установлен для загрузки в ваших настройках PHP ini. Он не работает как отдельный фоновый сервис.

Пример:

[Browser Client -> http://example.com/path/to/script.php]
in -> [NGINX]
in -> [php-fpm /path/to/script.php]
[xdebug remote host:port] <- out

или же

[terminal command line]
in -> [php /path/to/script.php]
[xdebug remote host:port] <-out

Так что да, для запуска xdebug нужны php-fpm или php-cli, так как они одно и то же.

Если через Apache / NGINX, который использует php-fpm, он должен быть загружен в вашей конфигурации fpm. Если через интерфейс CLI, он должен быть загружен в вашей конфигурации CLI.

Имейте в виду, что вы можете запустить PHP с различными конфигурациями ini в зависимости от среды. Увидеть PHP — файл конфигурации

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector