在Docker中安装XDebug

时间:2018-04-18 19:09:14

标签: php docker installation xdebug

我试图在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

有谁知道问题可能在哪里?

提前谢谢!

6 个答案:

答案 0 :(得分:10)

尝试一下:

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

答案 1 :(得分:7)

我通过在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/

答案 2 :(得分:6)

从PHP 7.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 \

答案 3 :(得分:3)

自 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

答案 4 :(得分:0)

对于 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 中。

答案 5 :(得分:-1)

你应该安装其他人也可以: -

  

apt-get install php-xdebug ver1.xx

apt-get install php-xdebug ver-4.2.x

也许这会解决这个问题。

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/
apt-get update php-xdebug "*'YOUR VERSION:-'* **MAYBE YOU SHOULD CONSIDER FOR YOUR OS"**