php - 将 Xdebug 从 php-fpm 和 nginx 容器中分离出来

标签 php docker nginx xdebug devops

我想将我所有的开发工具与主要的 php-fpm 和 nginx 容器分开。所以我基本上有 3 个名为 的容器php-fpm 在端口 9000 上运行, nginx 在端口 80 和 上开发工具 .我已经在我的开发工具容器上安装了 xdebug、composer 等,但我很困惑如何配置 xdebug 以便它可以与 php-fpm 容器一起使用并可以调试我的网站?第二个问题 xdebug 是否需要 php-cli 或 php-fpm 才能自行运行?

#开发工具

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

最佳答案

xdebug 使用端口 9000默认情况下,与 PHP-FPM 端口冲突。

您需要在 php.ini 中更改 PHP-FPM 池配置或 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 (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 来运行,因为它们是一回事。

如果通过使用 php-fpm 的 Apache/NGINX,则需要在您的 fpm 配置中加载它。如果通过 CLI 界面,则需要在 CLI 配置中加载。

请记住,您可以根据环境使用不同的 ini 配置运行 PHP。见 PHP - The configuration file

关于php - 将 Xdebug 从 php-fpm 和 nginx 容器中分离出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53227972/

相关文章:

php - 无法显示与使用 PHP 作为后端输入数据库时​​相同的格式

javascript - 使用 foreach 显示从序列化数据到数组的多封电子邮件

php - 分解 CSV 中的大量行并将它们作为批处理的 php 进行处理

docker - 在 docker 中的构建上下文之外复制文件而不增加构建上下文的大小?

docker - 撤消 sudo usermod -a -G docker $USER

ssl - 如何在 Varnish 层后面的同一台服务器上使用多个 SSL?

jquery表的php过滤函数

tomcat - 在启动期间将部署文件传递到 docker 容器中

php - 为什么我的 php 没有被渲染?为什么我的 php 页面是空白的?

nginx - 在本地网络中访问 NGINX 虚拟主机