簡體   English   中英

在 Docker 安裝 XDebug

[英]Installing XDebug in Docker

我正在嘗試在 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

問題可能在哪里?

我通過將以下幾行添加到我的 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/

試試這個:

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

從 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 \

從 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

對於 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

更多細節在描述我在 Docker 設置中的 PHP 調試Gist 中

我在 dockerfile 中使用php8.0-alpine 我在容器中安裝xdebug時遇到問題,所以我將圖像更改為php8.0-alpine3.13並且工作正常。 似乎 3.14 與 xdebug 有一些問題。

這些是我為使一切正常工作所采取的步驟:

https://github.com/vandersondiniz1/php-7.3-alpine3.10

請注意,使用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 \

文檔:

你應該安裝其他也可以: -

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"**

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM