我想将所有开发工具与主要的php-fpm和nginx容器分开。因此,我基本上有3个名为 php-fpm 的容器在端口9000上运行, nginx 在端口80和 dev-tools 上运行。我已经在我的dev-tools容器上安装了xdebug,composer等,但是我对如何配置xdebug感到困惑,以便它可以与php-fpm容器一起使用并可以调试我的网站?第二个问题xdebug是否需要php-cli或php-fpm才能运行?
#dev-tools
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 :(得分:3)
xdebug默认使用端口9000
,该端口与PHP-FPM端口冲突。
您需要更改PHP-FPM池配置的分配端口或php.ini中的xdebug。我建议更新您的PHP-FPM配置以侦听其他端口,因为使用xdebug进行调试的配置较少。
如果您想在PHP-FPM中更改端口。
/php-fpm.d/pool.conf
[pool]
listen = 127.0.0.1:9001
适当地更新NGINX配置以使用新端口。
否则,如果您想在PHP中更改xdebug端口。
php.ini
[xdebug]
xdebug.remote_port=9001
将调试(PHP编辑器/ IDE)软件和防火墙配置更新到新端口。或者,使用SSH隧道将新的远程端口9001转发到默认的本地端口9000
关于第二个问题
如果xdebug设置为在PHP ini设置中加载,则xdebug仅作为PHP的扩展(php-fpm)运行。它不能作为单独的后台服务运行。
示例:
[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才能运行,因为它们是相同的。
如果通过使用php-fpm的Apache / NGINX,则需要将其加载到您的fpm配置中。如果通过CLI界面,则需要将其加载到CLI配置中。
请记住,您可以基于环境使用不同的ini配置运行PHP。参见PHP - The configuration file