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

时间:2018-02-09 07:09:13

标签: php docker php-extension 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/

5 个答案:

答案 0 :(得分:31)

looks like PHP不再捆绑libzip。你需要install it。您安装zlib1g-dev,而是安装libzip-dev。这会将zlib1g-dev安装为依赖项,并允许configure脚本检测到libzip已安装。

然后你需要

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

在使用

执行安装之前
docker-php-ext-install zip

如最后一个警告所示。

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

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

我已经验证了这是按照预期构建的。

答案 1 :(得分:3)

要构建php / apache容器,您只需先安装 libzip-dev 库。至少使用docker image 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

希望有帮助

答案 2 :(得分:3)

如果您使用的是7.4,这对我有用:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class day extends Model
{
     protected $fillable = [
        'day',
    ];

    public function breakfast_menu()
    {
        return $this->hasOne('App\breakfast_menu', 'day_id');
    }
}

答案 3 :(得分:2)

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

答案 4 :(得分:0)

这对我有用:

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