sakhunzai
tengo un Dockerfile
con un comando de compilación como este:
#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
&& docker-php-ext-install zip
Recibo esta advertencia de la salida de compilación:
ADVERTENCIA: El uso de libzip incluido está en desuso y se eliminará.
configure: ADVERTENCIA: Algunas características como el cifrado y bzip2 no están disponibles.
configure: ADVERTENCIA: Se recomienda usar la biblioteca del sistema y –with-libzip.
¿Cuál es la forma correcta de instalar la extensión zip sin estas advertencias?
Mi Dockerfile completo se ve así:
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/
solo un estudiante
Eso parece PHP ya no incluye paquetes libzip. Necesitas instalarlo. tu instalas zlib1g-dev
pero en lugar de instalar libzip-dev
. Esto instala zlib1g-dev
como una dependencia y permite la configure
script para detectar eso libzip
esta instalado.
Para PHP
docker-php-ext-configure zip --with-libzip
antes de realizar la instalación con
docker-php-ext-install zip
como indica la última advertencia.
En resumen: cambie la parte relevante de su Dockerfile a
Para PHP
#install some base extensions
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-configure zip --with-libzip \
&& docker-php-ext-install zip
Para PHP >= 7.3
#install some base extensions
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-install zip
He verificado que esto se construye como se esperaba.
En caso de que no esté utilizando el Docker Imagen básica de PHP, las cosas pueden ser mucho más fáciles. Por ejemplo, para Alpine, el siguiente Dockerfile le proporcionará PHP 7 con la extensión zip instalada.
FROM alpine:latest
RUN apk update && apk upgrade
RUN apk add php7 php7-zip composer
-
gracias, resolvió un problema que tenía al actualizar desde 7.1
– brad
17 de marzo de 2021 a las 12:41
-
¡Gracias! Está despejado. Cuando pasa de 7.3 a 7.4, debe eliminar
docker-php-ext-configure zip --with-libzip
– Jugador 1
27 de julio de 2021 a las 20:09
En caso de que esté usando 7.4, esto funcionó para mí:
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
-
Esto funcionó para mí usando 7.4.
– Usama Munir
20 de junio a las 12:57
Bernard Tai
Construí un contenedor PHP en Docker usando php:7.2-fpm-alpine
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
-
Es posible que desee decir por qué eso es diferente/mejor que la receta de OP, y también por qué está instalando zip como un docker-php-ext-install adicional (que crea una capa adicional).
–Greg Bell
4 de diciembre de 2019 a las 20:01
-
Este ejemplo me ayudó mucho, ya que también estoy usando alpine para mi contenedor. ¡Gracias! @GregBell Estoy de acuerdo en que ejecutar varios comandos EJECUTAR parece menos eficiente.
– Rizky Fakkel
17 de diciembre de 2019 a las 12:45
Para construir un contenedor de php/Apache solo tienes que instalar primero libzip-dev biblioteca. Al menos usando la imagen acoplable 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
Espero eso ayude
charlie
Aparentemente, la extensión zip necesita el libzip-dev
paquete en tiempo de ejecución (no solo en tiempo de compilación). Originalmente agregué el apk add libzip-dev
a un paquete virtual que instalé junto con gcc make postgresql-dev
que luego eliminé para mantener la imagen pequeña.
Esto funciona:
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/*
Esto hace no trabajar:
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/*
-
Estoy usando php7.4-fpm-alpine y esto es lo único que funcionó para mí. ¡Buena atrapada!
– Nathan
11 de diciembre de 2020 a las 22:01
-
instalando
libzip
junto alibzip-dev
luego desinstalarlibzip-dev
también funcionaría– ahmadali shafiee
6 de febrero de 2021 a las 12:17
-
@ahmadalishafiee mi conclusión cuando probé esto el año pasado fue que desinstalar libzip-dev después de construir lipzip rompió la biblioteca
– charlie
6 de febrero de 2021 a las 20:53
-
Puedo confirmar,
libzip-dev
se requiere en tiempo de ejecución.– nmfzone
6 sep 2021 a las 16:28
dijo
Creé un dockerfile de PHP usando php:7.4-fpm-alpine
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
-
Estoy usando php7.4-fpm-alpine y esto es lo único que funcionó para mí. ¡Buena atrapada!
– Nathan
11 de diciembre de 2020 a las 22:01
-
instalando
libzip
junto alibzip-dev
luego desinstalarlibzip-dev
también funcionaría– ahmadali shafiee
6 de febrero de 2021 a las 12:17
-
@ahmadalishafiee mi conclusión cuando probé esto el año pasado fue que desinstalar libzip-dev después de construir lipzip rompió la biblioteca
– charlie
6 de febrero de 2021 a las 20:53
-
Puedo confirmar,
libzip-dev
se requiere en tiempo de ejecución.– nmfzone
6 sep 2021 a las 16:28
Diego Santa Cruz Mendezú
esto funcionó para mí:
RUN docker-php-ext-configure zip --with-libzip
probar
apt-get install php7.0-zip
– Vladímir
9 de febrero de 2018 a las 7:12
@Vladimir es docker, creo que sugieren usar
docker-php-ext-install
hub.docker.com/_/php– sakhunzai
9 de febrero de 2018 a las 7:18