PHP-Fehler: "Die Zip-Erweiterung und der Entpack-Befehl fehlen. Überspringen."

143

Wenn ich a ausführe composer update, wird folgende Fehlermeldung angezeigt:

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

Was muss ich tun, um die Befehle zip und unzip zu aktivieren, damit Composer Abhängigkeiten herunterladen kann?

b85411
quelle
Problemumgehung: Verwendung composer update --prefer-source Ich hatte dieses Problem beim Versuch, composer updatephpspec zu verwenden. Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. Ich bin auf einem Mac und hatte Probleme, Homebrew zum Installieren von PHP-Erweiterungen zu bringen. Meine schnelle Lösung bestand darin, durch Hinzufügen der Option --prefer-source zu erzwingen, dass composer kein Zip verwendet werden muss. Dies bedeutet, dass das Repo anstelle eines komprimierten Pakets heruntergeladen wird. Keine langfristige Lösung, aber praktisch zu wissen.
John Walker

Antworten:

308

Abhängig von Ihrer Linux- und PHP-Version können diese variieren.

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

Dies ist eine sehr häufig gestellte Frage. Sie können weitere nützliche Informationen im Äther finden, indem Sie suchen <distro> php <version> zip extension.

Arrisar
quelle
48
Für Ubuntu apt-get install php-zipist ausreichend
Olaf Dietsche
1
@OlafDietsche Woher wissen / bestimmen Sie, wann Sie php[version]-packagevs php-packagefür ein bestimmtes Paket installieren müssen ? Würde gerne wissen, wie ich normalerweise nur mit der php[version]-packageVersion gehe , aber vielleicht ist das nicht optimal ...
Ellenbogenlobstercowstand
@elbowlobstercowstand php-<package>ist die Standardversion. Diese Pakete hängen nur von der neuesten Version ab. Wenn Sie einige konkrete (meist ältere) Version benötigen, installieren Sie php<version>-<package>.
Olaf Dietsche
Es funktioniert auch für # yum install zip unzip php7.2-zip(unter CentOS 7)
Pathros
1
Die Leute geben immer wieder Anweisungen, um php-zip sowie zip / unzip zu installieren. Es macht keinen Sinn, dass es beides braucht.
jgmjgm
45

Für Server mit PHP 5.6

sudo apt-get install zip unzip php5.6-zip
Olawale
quelle
1
Du bist ein Lebensretter, mein Freund.
Haring10
1
Hat für mich gearbeitet. Danke
umarbilal
23

Für Debian Jessie (dies ist die aktuelle Standardeinstellung für das PHP-Image auf Docker Hub):

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

Sie können --yes weglassen, aber es ist nützlich, wenn Sie es in einer Docker-Datei ausführen.

Peter Breuls
quelle
php-zip
Vielen
23

Für ältere Ubuntu-Distributionen dh 16.04, 14.04, 12.04 usw.

sudo apt-get install zip unzip php7.0-zip
Goke Obasa
quelle
2
einschließlich 16.04
Aufleuchten
15

Ich hatte PHP7.2 auf einem Ubuntu 16.04 Server und es löste mein Problem:

sudo apt-get install zip unzip php-zip

Aktualisieren

Versuchte dies für Ubuntu 18.04 und funktionierte auch.

Aqib Ashef
quelle
7

Ich benutze Ubuntu und mit dem folgenden Befehl hat funktioniert

apt-get install --yes zip unzip

Oscar David
quelle
5

Nicht um den Punkt zu beleuchten, aber wenn Sie in einem arbeiten Dockerfile, würden Sie dieses spezielle Problem mit Composer lösen, indem Sie das unzipDienstprogramm installieren . Unten finden Sie ein Beispiel für die Installation des offiziellen PHP-Imagesunzip und der zipPHP-Erweiterung.

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

Dies ist ein hilfreiches GitHub-Problem, bei dem das oben Genannte liebevoll behoben wurde.

DJ Sipe
quelle
4

Wenn Sie Ubuntu und PHP 7.2 verwenden , verwenden Sie diese ...

sudo apt-get update
sudo apt-get install zip unzip php7.2-zip
Aphoe
quelle
3

Ich habe diesen Fehler erhalten, als ich Laravel 5.5 auf meinem Digitalocean Cloud Server (Ubuntu 18.04 und PHP 7.2) installiert habe und der folgende Befehl ihn behoben hat.

sudo apt install zip unzip php7.2-zip

Joyal
quelle
2

Auf Docker mit Bild php:7.2-apachebrauchte ich nur zip und entpacken. Keine Notwendigkeit für PHP-Zip:

apt-get install zip unzip

oder Dockerfile

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

Eigentlich scheint der Komponist heutzutage ohne den zipBefehlszeilenbefehl zu funktionieren , daher php-zipsollte die Installation ausreichen --- ABER es würde eine Warnung angezeigt:

Da kein 'unzip'-Befehl installiert ist, werden Zip-Dateien mit der PHP-Zip-Erweiterung entpackt. Dies kann zu ungültigen Berichten über beschädigte Archive führen. Durch die Installation von 'unzip' können sie möglicherweise behoben werden.

Siehe auch Gibt es ein Problem mit der Verwendung von PHP-Zip (Komponist warnt davor)

Alex
quelle