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

2022-08-30 08:53:28

我有一个像这样的构建命令:Dockerfile

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

我从构建输出中得到这个警告:

警告:捆绑的 libzip 已被弃用,并将被删除。
配置:警告:某些功能(如加密和 bzip2)不可用。
配置:警告:建议使用系统库和 --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/

答案 1

看起来PHP不再捆绑libzip。您需要安装它。您安装 ,但改为安装 。这将作为依赖项安装,并允许脚本检测已安装的内容。zlib1g-devlibzip-devzlib1g-devconfigurelibzip

对于 PHP < 7.3,您需要

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

在执行安装之前

docker-php-ext-install zip

如最后一个警告所示。

简而言之:将 Docker 文件的相关部分更改为

对于 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扩展的PHP 7。

FROM alpine:latest

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

答案 2

如果您使用的是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 

推荐