[英]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
我在 dockerfile 中使用php8.0-alpine
。 我在容器中安裝xdebug
時遇到問題,所以我將圖像更改為php8.0-alpine3.13
並且工作正常。 似乎 3.14 與 xdebug 有一些問題。
這些是我為使一切正常工作所采取的步驟:
請注意,使用xdebug.remote_enable
和xdebug.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.