带 PHP zip 扩展的 Docker 映像构建显示了“捆绑的 libzip 已被弃用”警告

我有一个具有如下构建命令的 Dockerfile:

#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
&& docker-php-ext-install zip

我从构建输出中得到如下警告:

警告: 不推荐使用捆绑的 libzip,将被删除。
Configure: 警告: 加密和 bzip2等一些特性不可用。
Configure: 警告: 使用系统库和—— with-libzip 建议。

在没有这些警告的情况下安装 zip 扩展的正确方法是什么?

我的完整 Dockerfile 看起来像:

FROM php:7.2-apache


RUN apt-get clean
RUN apt-get update


#install some basic tools
RUN apt-get install -y \
git \
tree \
vim \
wget \
subversion


#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
&& docker-php-ext-install zip


#setup composer
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/ \
&& ln -s /usr/local/bin/composer.phar /usr/local/bin/composer




WORKDIR /var/www/
91054 次浏览

它不再捆绑 看起来像 PHP。你需要 安装它。您可以安装 zlib1g-dev,而不是安装 libzip-dev。这将 zlib1g-dev作为一个依赖项安装,并允许 configure脚本检测已安装的 libzip

对于 PHP < 7.3,则需要

docker-php-ext-configure zip --with-libzip

执行安装之前,使用

docker-php-ext-install zip

正如最后一次警告所显示的。

简而言之: 将 Dockerfile 的相关部分更改为

PHP < 7.3

#install some base extensions
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-configure zip --with-libzip \
&& docker-php-ext-install zip

对于 PHP > = 7.3

#install some base extensions
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-install zip

我已经验证了这个构建如预期的那样。


如果您不使用 Docker PHP 基础图像,事情可能会容易得多。例如,对于 Alpine,下面的 Dockerfile 将为您提供安装了 zip 扩展的 PHP7。

FROM alpine:latest


RUN apk update && apk upgrade
RUN apk add php7 php7-zip composer

我使用 php:7.2-fpm-alpine在 Docker 上构建了一个 PHP 容器

FROM php:7.2-fpm-alpine


WORKDIR /var/www


RUN apk add --no-cache zip libzip-dev
RUN docker-php-ext-configure zip --with-libzip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql

为了构建 php/apache 容器,您只需要首先安装 Libzip-dev库。至少使用 docker 映像 php: 7.3-apache

FROM php:7.3-apache
MAINTAINER XXX


RUN apt-get update
RUN apt-get install -y libzip-dev
RUN docker-php-ext-install zip

希望能有帮助

如果你正在使用7.4,这对我很有用:

FROM php:7.4-fpm-alpine


RUN apk add --no-cache zip libzip-dev
RUN docker-php-ext-configure zip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql

这对我很有效:

RUN docker-php-ext-configure zip --with-libzip

显然,zip 扩展在运行时需要 libzip-dev包(而不仅仅是构建时)。我最初将 apk add libzip-dev添加到我与 gcc make postgresql-dev一起安装的虚拟包中,后来我将其删除以保持映像小。

这种方法是有效的:

RUN apk add openjdk11-jre-headless libzip-dev \ # libzip-dev not part of virtual package
&& apk add --no-cache --virtual \
.build-deps autoconf g++ make postgresql-dev  \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_pgsql bcmath \
&& pecl install redis-5.3.1 \
&& pecl install xdebug-beta \
&& docker-php-ext-enable redis opcache xdebug \
&& apk add libpq ca-certificates curl \
&& apk del .build-deps  \
&& rm -rf /tmp/* \
&& rm -rf /var/cache/apk/*

这是 没有的工作原理:

RUN apk add openjdk11-jre-headless \
&& apk add --no-cache --virtual \
.build-deps autoconf g++ make postgresql-dev libzip-dev \ # libzip-dev part of virtual package
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_pgsql bcmath \
&& pecl install redis-5.3.1 \
&& pecl install xdebug-beta \
&& docker-php-ext-enable redis opcache xdebug \
&& apk add libpq ca-certificates curl \
&& apk del .build-deps  \
&& rm -rf /tmp/* \
&& rm -rf /var/cache/apk/*

我使用 PHP: 7.4-fpm-alpine 构建了一个 PHP dockerfile

FROM php:7.4-fpm-alpine
    

# Apk install
RUN apk --no-cache update && apk --no-cache add bash git
RUN apk add --no-cache zip libzip-dev


RUN docker-php-ext-configure zip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
    

# Install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php && php -r "unlink('composer-setup.php');" && mv composer.phar /usr/local/bin/composer
    

# Symfony CLI
RUN wget https://get.symfony.com/cli/installer -O - | bash && mv /root/.symfony/bin/symfony /usr/local/bin/symfony
    

WORKDIR /var/www/html
FROM php:8.1-fpm-alpine


# Install persistent dependencies
RUN set -eux; \
apk add --no-cache --update \
bash \
imagemagick \
ghostscript \
zip \
unzip \
nano \
libzip-dev \
libgomp




# Install the PHP extensions
RUN set -ex; \
apk add --no-cache --virtual .build-deps \
${PHPIZE_DEPS} \
freetype-dev \
icu-dev \
imagemagick-dev \
libjpeg-turbo-dev \
libpng-dev \
libwebp-dev \
zlib-dev \
; \