Errore PHP: "L'estensione zip e il comando di decompressione mancano entrambi, saltando."


144

Quando eseguo un composer updateottengo questo messaggio di errore:

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

Cosa devo fare per abilitare i comandi zip e unzip in modo che il compositore possa scaricare le dipendenze?


Soluzione alternativa: utilizzare composer update --prefer-source Ho composer updateriscontrato questo problema durante il tentativo di phpspec. Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. Sono su un Mac e ho avuto problemi a far funzionare Homebrew per installare le estensioni php. Quindi, la mia soluzione rapida è stata quella di forzare il composer non utilizzo di zip aggiungendo l'opzione --prefer-source. Ciò significa che scarica il repository anziché un pacchetto zippato. Non è una soluzione a lungo termine ma utile da sapere.
John Walker,

Risposte:


311

A seconda del tipo di versione di Linux e PHP, questi possono variare.

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

Questa è una domanda molto comune, sarai in grado di trovare più informazioni utili nell'etere cercando <distro> php <version> zip extension.


48
Per Ubuntu apt-get install php-zipè sufficiente
Olaf Dietsche il

1
@OlafDietsche Come fai a sapere / determinare quando installare php[version]-packagevs php-packageper un determinato pacchetto? Mi piacerebbe sapere come di solito vado solo con la php[version]-packageversione, ma forse non è ottimale ...
elbowlobstercowstand

@elbowlobstercowstand php-<package>è la versione predefinita. Questi pacchetti dipendono solo dalla versione più recente. Se hai bisogno di una versione specifica (di solito più vecchia), installi php<version>-<package>.
Olaf Dietsche,

Funziona anche per # yum install zip unzip php7.2-zip(su CentOS 7)
Pathros,

1
Le persone continuano a dare istruzioni per installare php-zip e zip / unzip. Non ha senso che abbia bisogno di entrambi.
jgmjgm,

45

Per server con PHP 5.6

sudo apt-get install zip unzip php5.6-zip

1
Mi hai salvato la vita, amico mio.
Haring10,

1
Ha funzionato per me. Grazie
umarbilal

23

Per Debian Jessie (che è l'impostazione predefinita corrente per l'immagine PHP su Docker Hub):

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

Puoi omettere i --yes, ma è utile quando lo esegui in un Dockerfile.


grazie per aver condiviso Peter, mi ha risparmiato un po 'di tempo a cercare la versione giusta di php-zip: D
thaerlabs

23

Per le versioni precedenti di Ubuntu, ovvero 16.04, 14.04, 12.04 ecc

sudo apt-get install zip unzip php7.0-zip

2
di cui 16.04
lightup

16

Avevo PHP7.2 su un server Ubuntu 16.04 e ho risolto il mio problema:

sudo apt-get install zip unzip php-zip

Aggiornare

Ho provato questo per Ubuntu 18.04 e ha funzionato pure.


7

Sto usando Ubuntu e con il seguente comando ha funzionato

apt-get install --yes zip unzip


5

Non per ribadire il punto, ma se stai lavorando in a Dockerfile, risolveresti questo particolare problema con Composer installando l' unziputilità. Di seguito è riportato un esempio che utilizza l' immagine PHP ufficiale da installare unzipe l' zipestensione PHP per una buona misura.

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

Questo è un utile problema di GitHub da cui viene sollevato amorevolmente quanto sopra.


4

Se stai usando Ubuntu e PHP 7.2 , usa questo ...

sudo apt-get update
sudo apt-get install zip unzip php7.2-zip

3

Ho riscontrato questo errore quando ho installato Laravel 5.5 sul mio server cloud digitalocean (Ubuntu 18.04 e PHP 7.2) e il seguente comando lo ha riparato.

sudo apt install zip unzip php7.2-zip


2

Sulla finestra mobile con l'immagine php:7.2-apacheavevo solo bisogno di zip e decomprimere. Non è necessario 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"]

1

Al giorno d'oggi il compositore sembra funzionare senza il zipcomando della riga di comando, quindi l'installazione php-zipdovrebbe essere sufficiente --- MA mostrerebbe un avviso:

Poiché non esiste alcun comando 'decomprimi', i file zip installati vengono decompressi utilizzando l'estensione zip PHP. Ciò può causare report non validi di archivi danneggiati. L'installazione di 'unzip' potrebbe risolverli.

Vedi anche C'è un problema con l'uso di php-zip (il compositore lo avverte)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.