php 在Docker中安装XDebug

vmdwslir  于 2023-01-29  发布在  PHP
关注(0)|答案(7)|浏览(294)

我尝试在Docker容器中安装XDebug,但收到以下错误:

E: Unable to locate package php-xdebug

这是我的Dockerfile:

FROM php:7.0-apache

RUN a2enmod rewrite

RUN docker-php-ext-install pdo pdo_mysql

RUN apt-get install php-xdebug -y

COPY php.ini /usr/local/etc/php/
COPY . /var/www/html/

当我在计算机上运行相同的命令时,XDebug正在安装,没有任何错误:

apt-get install php-xdebug

问题可能出在哪里?

sqougxex

sqougxex1#

我通过在Docker文件中添加以下行来解决这个问题:

FROM php:7.0-apache

RUN a2enmod rewrite

RUN docker-php-ext-install pdo pdo_mysql

RUN yes | pecl install xdebug \
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini

COPY php.ini /usr/local/etc/php/
COPY . /var/www/html/
l2osamch

l2osamch2#

试试这个:

RUN pecl install xdebug && docker-php-ext-enable xdebug
uqzxnwby

uqzxnwby3#

从PHP7.4开始,您只需要这个

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

并添加此行以启用远程调试

&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
ki1q1bka

ki1q1bka4#

从xdebug版本3开始,配置名称有了突破性的变化。

RUN pecl install xdebug; \
    docker-php-ext-enable xdebug

和配置:

{ \
            echo "xdebug.mode=debug"; \
            echo "xdebug.start_with_request=yes"; \
            echo "xdebug.client_host=host.docker.internal"; \
            echo "xdebug.client_port=9000"; \
        } > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \

更多信息:https://xdebug.org/docs/upgrade_guide

tyg4sfes

tyg4sfes5#

对于PHP 7.3,我可以使用mlocati的docker-php-extension-installer安装XDebug。
我的Dockerfile看起来像这样:

FROM php:7.3-apache
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
RUN install-php-extensions xdebug @composer

我的docker-compose.yml包含以下内容,允许使用特殊的host.docker.internal名称:

extra_hosts:
  - "host.docker.internal:host-gateway"

我的xdebug配置文件/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini如下所示:

[xdebug]
zend_extension=xdebug
xdebug.mode=develop,debug
xdebug.start_with_request = yes
xdebug.client_host = "host.docker.internal"
xdebug.client_ip = "9003"
xdebug.idekey="VSCODE"
xdebug.log=/tmp/xdebug_remote.log

更多详情请参见Gist describing my PHP Debugging in Docker setup

hmae6n7t

hmae6n7t6#

我在dockerfile中使用了php8.0-alpine。我在容器中安装xdebug时遇到了问题,所以我将映像更改为php8.0-alpine3.13,并且工作正常。看起来3.14在xdebug方面遇到了一些问题。

slwdgvem

slwdgvem7#

需要注意的是,使用xdebug.remote_enablexdebug.remote_host不再正确,因为这些选项在xdebug v3中被重命名,现在您应该使用配置名称:

# For xdebug v3
RUN pecl install xdebug \
    && docker-php-ext-enable xdebug \
    && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \

文件:

相关问题