首页 >后端开发 >php教程 >在一分钟内与Docker和PHP 8.4一起工作

在一分钟内与Docker和PHP 8.4一起工作

Emily Anne Brown
Emily Anne Brown原创
2025-03-06 02:01:17837浏览

> Xdebug具有具有陡峭的设置学习曲线的历史。我在这里向您展示,设置Xdebug并不一定要痛苦。实际上,我相信您可以在大约一分钟内开始使用Xdebug与Docker。

好吧,也许您需要几分钟的时间:)

>我们将用Laravel,Php 8.4和Xdebug v3.4.0演示该设置,这是撰写时最新的稳定版本。

>

我们需要获得Xdebug配置的docker映像的要旨包括:

    >安装Xdebug模块和配置的Dockerfile
  • a
  • >启动容器
  • 的文件 compose.yaml>您可以用作XDEBUG客户端的支持编辑器或IDE
  • #project设置
  • 在这篇文章中,我们将使用Apache简化服务器设置。但是,Dockerfile代码与在PHP-FPM图像中配置XDEBUG相同。

,如果您想遵循:,我们将首先设置一个演示项目

>我们通过命令行为我们的设置创建了文件夹和文件,但随时可以随意制作。除了典型的Docker文件外,我们还创建了一个

文件来将Web根路径配置为我们的应用程序。

#Docker Image设置

<!-- Syntax highlighted by torchlight.dev -->laravel new xdebug-demo --git --no-interaction
cd xdebug-demo
mkdir -p build/php/conf.d build/apache
touch compose.yaml \
    build/Dockerfile \
    build/php/conf.d/xdebug.ini \
    build/apache/vhost.conf
接下来,将以下内容添加到您的

文件:vhost.conf

dockerfile有很多行,因此让我们浏览最重要的代码,以帮助您掌握如何配置Xdebug。首先,我们使用多阶段构建,因此我们可以在开发环境中配置Xdebug。在

阶段是

>阶段之前,它具有基础设置,我们的图像需求,例如我们想要的build/Dockerfile>

<!-- Syntax highlighted by torchlight.dev -->FROM php:8.4-apache as base

LABEL maintainer="Paul Redmond"

RUN docker-php-ext-install pdo_mysql opcache && \
    a2enmod rewrite negotiation

COPY build/apache/vhost.conf /etc/apache2/sites-available/000-default.conf

FROM base as development

RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini

COPY build/php/conf.d/xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini

RUN pecl channel-update pecl.php.net && \
    pecl install xdebug-3.4.0 && \
    docker-php-ext-enable xdebug

FROM base as app

RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
COPY . /srv/app
环境和配置apache。

接下来,development阶段复制了php.ini文件的开发版本,复制了将使我们对xdebug进行的自定义化的配置。我们使用支持PHP 8.4的支持,并且是写作时最新稳定的。 最后,我们有一个base>阶段,这是我们的应用程序图像在生产构建中使用的。使用>目标省略配置Xdebug并使用php.ini文件的生产版。 #APACHE VHOST

>我们不是在这里学习如何配置Apache,我们只想使用它来快速演示在Docker中设置Xdebug的容易性。只需将以下代码添加到development>文件中,然后将其复制到docker映像中以指向应用程序代码:> xdebug.ini v3.4.0 #xdebug configuration

接下来,我们需要通过创建的文件配置XDebug。如果您遵循以下内容,则将以下内容添加到此文件中:app>

<!-- Syntax highlighted by torchlight.dev -->laravel new xdebug-demo --git --no-interaction
cd xdebug-demo
mkdir -p build/php/conf.d build/apache
touch compose.yaml \
    build/Dockerfile \
    build/php/conf.d/xdebug.ini \
    build/apache/vhost.conf

>我们需要定义客户端主机的自定义。由于我们正在使用Docker网络,因此Xdebug需要知道如何与主机机器进行通信。如果您使用的是Docker桌面,则Docker有一个指向主机计算机的主机。host.docker.internal

如果没有,您将需要找到计算机的本地网络IP并使用它。我们可以通过一个环境变量为该值供电,但是我将其保存在以后的帖子中。>

最后,我们使用

>始终按每个请求启动xdebug。当我们不想使用Xdebug时,我们可以使用编辑器的UI禁用Xdebug,但它始终会尝试建立连接。

> xdebug.start_with_request = yes#running图像

>在验证Xdebug连接之前,我们需要配置应用程序容器。我们将使用Docker组成来通过将以下内容添加到

>:来运行我们的应用程序。

compose.yaml我们的

>服务针对构建的
<!-- Syntax highlighted by torchlight.dev -->FROM php:8.4-apache as base

LABEL maintainer="Paul Redmond"

RUN docker-php-ext-install pdo_mysql opcache && \
    a2enmod rewrite negotiation

COPY build/apache/vhost.conf /etc/apache2/sites-available/000-default.conf

FROM base as development

RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini

COPY build/php/conf.d/xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini

RUN pecl channel-update pecl.php.net && \
    pecl install xdebug-3.4.0 && \
    docker-php-ext-enable xdebug

FROM base as app

RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
COPY . /srv/app
阶段,安装卷,以便我们可以在不重建图像的情况下更改代码,并使用端口

>在本地为应用程序服务。 app我们现在可以使用Docker组成:构建和启动图像 development 8080>上一个命令将构建图像,启动容器并在后台运行。此时,Xdebug准备接收连接,但是,我们需要在IDE中调整一件事才能使其正常工作。

#configing phpstorm

我们将使用phpstorm,但是您可以使用支持Xdebug的任何编辑器。由于我们正在使用Docker,因此我们需要在PHPSTORM中配置服务器,该服务器将Docker卷映射到本地项目代码。您可以通过打开设置&gt; php&gt;服务器和配置Localhost服务器,其映射为
<!-- Syntax highlighted by torchlight.dev --><VirtualHost *:80>
 ServerAdmin webmaster@localhost
 DocumentRoot /srv/app/public

 <Directory "/srv/app/public">
 AllowOverride all
 Require all granted
 </Directory>

 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

如果您没有Localhost服务器,则可以使用port

>从此设置页面添加一个服务器,然后选择/srv/app接下来,我们准备使用右上角菜单附近的错误图标启用Xdebug,当您悬停在它上时,上面说“开始聆听PHP调试连接”:

8080 单击它时,您应该看到图标变绿色。Xdebug>

我们需要做的最后一件事是设置一个断点。打开

>文件,并在主页路由的唯一线路上设置一个断点:>

如果您在Web浏览器(Localhost:8080)中打开项目,则PHPSTOMS应提示您第一次连接。之后,它将在您设置的任何断点上自动暂停。调试完成后,您可以单击“错误图标”以禁用Xdebug连接。

#learn更多

继续在本教程的第2部分中继续:具有PHP INI环境变量的灵活Docker图像。

>您现在应该能够在您的项目中使用Xdebug!我还向您展示了一个奖励主题 - 使用多阶段图像来设置开发工具和生产设置的单独阶段。使用多阶段构建可以将您的图像提升到另一个灵活性级别。

>

如果您陷入了设置Xdebug的编辑部分,则PhpStorm具有有关如何配置Xdebug的广泛文档。 Xdebug的文档是另一个出色的参考,包括有关设置,工具,配置选项等的文档。

以上是在一分钟内与Docker和PHP 8.4一起工作的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn