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

新手上路,请多包涵

我有一个 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/

原文由 sakhunzai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 889
2 个回答

看起来 PHP 不再捆绑 libzip 。你需要 安装它。您安装 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 扩展的 PHP 7。

 FROM alpine:latest

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

原文由 Just a student 发布,翻译遵循 CC BY-SA 4.0 许可协议

我使用 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

原文由 said 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题