Error de PHP: "Faltan la extensión zip y el comando descomprimir".

144

Cuando ejecuto un composer updatemensaje de error:

Loading composer repositories with package information
Updating dependencies (including require-dev)
    Failed to download psr/log from dist: The zip extension and unzip command are both missing, skipping.
The php.ini used by your command-line PHP is: /etc/php/7.0/cli/php.ini
    Now trying to download from source

¿Qué debo hacer para habilitar los comandos zip y descomprimir para que el compositor pueda descargar dependencias?

b85411
fuente
Solución alternativa: uso composer update --prefer-source Tuve este problema al intentar composer updatephpspec. Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. Estoy en una Mac y tuve problemas para hacer que Homebrew funcione para instalar extensiones php. Por lo tanto, mi solución rápida era obligar composer no a la necesidad de su uso postal añadiendo la opción --prefer de código. Esto significa que descarga el repositorio en lugar de un paquete comprimido. No es una solución a largo plazo, pero es útil saberlo.
John Walker

Respuestas:

311

Dependiendo de su versión de Linux y PHP, esto puede variar.

(sudo) yum install zip unzip php-zip
(sudo) apt install zip unzip php-zip

Esta es una pregunta muy común, podrá buscar más información útil en el éter mediante la búsqueda <distro> php <version> zip extension.

Arrisar
fuente
48
Para Ubuntu apt-get install php-zipes suficiente
Olaf Dietsche
1
@OlafDietsche ¿Cómo sabe / determina cuándo instalar php[version]-packagevs php-packagepara cualquier paquete dado? Me encantaría saber que generalmente solo uso la php[version]-packageversión, pero tal vez eso no sea óptimo ...
elbowlobstercowstand
@elbowlobstercowstand php-<package>es la versión predeterminada. Estos paquetes solo dependen de la versión más reciente. Si necesita alguna versión específica (generalmente más antigua), instale php<version>-<package>.
Olaf Dietsche
También funciona para # yum install zip unzip php7.2-zip(en CentOS 7)
Pathros
1
La gente sigue dando instrucciones para instalar php-zip, así como zip / unzip. No tiene sentido que necesite ambos.
jgmjgm
45

Para servidores con PHP 5.6

sudo apt-get install zip unzip php5.6-zip
Olawale
fuente
1
Eres un salvavidas, mi amigo.
Haring10
1
Trabajó para mi. Gracias
umarbilal
23

Para Debian Jessie (que es el valor predeterminado actual para la imagen PHP en Docker Hub):

apt-get install --yes zip unzip php-pclzip

Puede omitir --yes, pero es útil cuando lo está EJECUTANDO en un Dockerfile.

Peter Breuls
fuente
gracias por compartir Peter, me ahorró algo de tiempo buscando la versión correcta de php-zip: D
thaerlabs
23

Para distribuciones de Ubuntu anteriores, es decir, 16.04, 14.04, 12.04, etc.

sudo apt-get install zip unzip php7.0-zip
Goke Obasa
fuente
2
incluyendo 16.04
lightup
15

Tenía PHP7.2 en un servidor Ubuntu 16.04 y resolvió mi problema:

sudo apt-get install zip unzip php-zip

Actualizar

Probé esto para Ubuntu 18.04 y funcionó también.

Aqib Ashef
fuente
7

Estoy usando Ubuntu y con el siguiente comando funcionó

apt-get install --yes zip unzip

Oscar David
fuente
5

No para diferir el punto, pero si está trabajando en un Dockerfile, resolverá este problema particular con Composer instalando la unziputilidad. A continuación se muestra un ejemplo que utiliza la imagen oficial de PHP para instalar unzipy la zipextensión PHP para una buena medida.

FROM php:7.4-apache

# Install Composer
COPY --from=composer /usr/bin/composer /usr/bin/composer

# Install unzip utility and libs needed by zip PHP extension 
RUN apt-get update && apt-get install -y \
    zlib1g-dev \
    libzip-dev \
    unzip
RUN docker-php-ext-install zip

Este es un problema útil de GitHub de donde lo anterior se levanta con amor.

DJ Sipe
fuente
4

Si está usando Ubuntu y PHP 7.2 , use esto ...

sudo apt-get update
sudo apt-get install zip unzip php7.2-zip
aphoe
fuente
3

Recibí este error cuando instalé Laravel 5.5 en mi servidor de nube digitalocean (Ubuntu 18.04 y PHP 7.2) y el siguiente comando lo solucionó.

sudo apt install zip unzip php7.2-zip

Joyal
fuente
2

En la ventana acoplable con imagen php:7.2-apache, solo necesitaba comprimir y descomprimir. No hay necesidad de php-zip:

apt-get install zip unzip

o Dockerfile

RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "zip"]
RUN ["apt-get", "install", "-y", "unzip"]
Armel Larcier
fuente
1

En realidad, el compositor de hoy en día parece funcionar sin el zipcomando de línea de comando, por lo que la instalación php-zipdebería ser suficiente, PERO mostraría una advertencia:

Como no hay un comando 'descomprimir', los archivos zip instalados se descomprimen utilizando la extensión zip de PHP. Esto puede causar informes no válidos de archivos corruptos. Instalar 'descomprimir' puede remediarlos.

Consulte también ¿Hay algún problema con el uso de php-zip (el compositor lo advierte)

Alex
fuente