[英]How do I install XDebug on docker's official php-fpm-alpine image?
I'm using wordpress:php7.1-fpm-alpine
which is based on php:7.1-fpm-alpine
( https://github.com/docker-library/wordpress/blob/master/php7.1/fpm-alpine /Docker 文件)。
我试过RUN pecl install xdebug-2.5.0 && docker-php-ext-enable xdebug
在构建时导致错误:
Step 19/19 : RUN pecl install xdebug-2.5.0 && docker-php-ext-enable xdebug
---> Running in 52c988e12cb2
downloading xdebug-2.5.0.tgz ...
Starting to download xdebug-2.5.0.tgz (267,640 bytes)
........................................................done: 267,640 bytes
76 source files, building
running: phpize
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
以下内容足以在该图像上简单地安装 xdebug:
FROM wordpress:php7.1-fpm-alpine
RUN apk add --no-cache $PHPIZE_DEPS \
&& pecl install xdebug-2.5.0 \
&& docker-php-ext-enable xdebug
构建它然后从结果图像内的 shell 运行会产生以下内容:
$ php -i | grep Xdebug
with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans
如果您担心图像大小,可以删除依赖项:
FROM wordpress:php7.1-fpm-alpine
RUN apk --update --no-cache add autoconf g++ make && \
pecl install -f xdebug && \
docker-php-ext-enable xdebug && \
apk del --purge autoconf g++ make
很好的答案@msanchez_aplyca。 虽然通过apk
更正确地删除构建依赖项是:
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
&& pecl install xdebug-2.5.0 \
&& docker-php-ext-enable xdebug \
&& apk del -f .build-deps
例如,安装 Xdebug 3.0.0(2020 年 11 月 25 日发布)
兼容 PHP 8.0
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
&& pecl install xdebug-3.0.0 \
&& docker-php-ext-enable xdebug \
&& apk del -f .build-deps
现在你通过添加类似的东西来设置它(使用 Xdebug 3.0.0 语法,更多信息在这里):
# Configure Xdebug
RUN echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.log=/var/www/html/xdebug/xdebug.log" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.discover_client_host=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.client_port=9000" >> /usr/local/etc/php/conf.d/xdebug.ini
php -i
的 output 复制到剪贴板。您的结果可能会因您 select 的版本而异。
您可以通过查看 xdebug文档找到可用的版本。 在撰写本文时,仅列出了主要的 PHP 版本,但我能够手动指定功能版本。 只是不要包括点(例如, 81
NOT 8.1
)。
运行apk info -a php<your-php-version>-pecl-xdebug
以获取 package 的内容。
根据apk info -a php81-pecl-xdebug
,我的位置是:
php81-pecl-xdebug-3.1.5-r0 contains:
etc/php81/conf.d/50_xdebug.ini
usr/lib/php81/modules/xdebug.so
我喜欢将我的 xdebug.ini 保存在我的 VS Code.devcontainer 文件夹中,所以这就是我在本示例中将遵循的路线。 您还可以直接在其目标中创建配置文件。
如果您采用后一种路径,请根据文档将文件命名为99-xdebug.ini
。
无论哪种情况,您真正需要的只是启用 xdebug 的这一行。
zend_extension=xdebug
需要额外的选项来使它做任何有用的事情,但我会把它留给读者。
在您的 dockerfile 中,安装 package 并根据前面的步骤链接/复制文件。 例如:
ADD <local_xdebug.ini_path> <PHP Extra Configuration Files Path>99-xdebug.ini
RUN apk update && apk add php<version>-pecl-xdebug && \
ln -s /<apk_xdebug.so_path> \
<PHP Extensions directory>
就我而言:
ADD ./xdebug.ini /usr/local/etc/php/conf.d/99-xdebug.ini
RUN apk update && apk add php81-pecl-xdebug && \
ln -s /usr/lib/php81/modules/xdebug.so \
/usr/local/lib/php/extensions/no-debug-non-zts-20210902/xdebug.so
重建容器后,通过运行php -m
验证是否安装了 xdebug 模块
我是一个 PHP 假人,所以我像以前一样使用xdebug 安装向导来验证 xdebug 是否已启用。
希望这可以为其他人节省几个令人沮丧的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.