Kesalahan PHP: "Ekstensi zip dan perintah unzip keduanya hilang, dilewati."

144

Ketika saya menjalankan composer updatesaya mendapatkan pesan kesalahan ini:

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

Apa yang harus saya lakukan untuk mengaktifkan perintah zip dan unzip sehingga komposer dapat mengunduh dependensi?

b85411
sumber
Penanganan Masalah: Gunakan composer update --prefer-source Saya memiliki masalah ini ketika mencoba untuk composer updatephpspec. Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. Saya menggunakan Mac dan memiliki masalah dalam membuat Homebrew bekerja untuk menginstal ekstensi php. Jadi, perbaikan cepat saya adalah untuk memaksa composer tidak perlu menggunakan zip dengan menambahkan opsi --prefer-source. Ini berarti mengunduh repo daripada paket zip. Bukan solusi jangka panjang tapi berguna untuk diketahui.
John Walker

Jawaban:

311

Tergantung pada rasa versi Linux dan PHP Anda, ini dapat bervariasi.

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

Ini adalah pertanyaan yang sangat umum ditanyakan, Anda akan dapat menemukan informasi yang lebih berguna di ether dengan mencari <distro> php <version> zip extension.

Arrisar
sumber
48
Untuk Ubuntu apt-get install php-zipsudah cukup
Olaf Dietsche
1
@OlafDietsche Bagaimana Anda tahu / menentukan kapan menginstal php[version]-packagevs php-packageuntuk paket yang diberikan? Ingin tahu karena saya biasanya hanya pergi dengan php[version]-packageversi, tapi mungkin itu tidak optimal ...
elbowlobstercowstand
@elbowlobstercowstand php-<package>adalah versi default. Paket-paket ini hanya tergantung pada versi terbaru. Jika Anda memerlukan versi tertentu (biasanya lebih lama), Anda menginstal php<version>-<package>.
Olaf Dietsche
Ini juga berfungsi untuk # yum install zip unzip php7.2-zip(pada CentOS 7)
Pathros
1
Orang-orang terus memberikan instruksi untuk menginstal php-zip serta zip / unzip. Tidak masuk akal bahwa ia membutuhkan keduanya.
jgmjgm
45

Untuk server dengan PHP 5.6

sudo apt-get install zip unzip php5.6-zip
Olawale
sumber
1
Anda adalah penyelamat hidup, teman saya.
Haring10
1
Bekerja untukku. Terima kasih
umarbilal
23

Untuk Debian Jessie (yang merupakan default saat ini untuk gambar PHP di Docker Hub):

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

Anda dapat menghilangkan --ya, tetapi berguna saat Anda menjalankannya di Dockerfile.

Peter Breuls
sumber
terima kasih sudah berbagi Peter, menyelamatkan saya beberapa waktu mencari versi yang tepat dari php-zip: D
thaerlabs
23

Untuk distro Ubuntu yang lebih lama yaitu 16.04, 14.04, 12.04 dll

sudo apt-get install zip unzip php7.0-zip
Goke Obasa
sumber
2
termasuk 16,04
lampu
15

Saya punya PHP7.2 di server Ubuntu 16.04 dan itu memecahkan masalah saya:

sudo apt-get install zip unzip php-zip

Memperbarui

Mencoba ini untuk Ubuntu 18.04 dan bekerja dengan baik.

Aqib Ashef
sumber
7

Saya Menggunakan Ubuntu dan dengan perintah berikut berfungsi

apt-get install --yes zip unzip

Oscar David
sumber
5

Bukan untuk memperjelas titik, tetapi jika Anda bekerja di Dockerfile, Anda akan menyelesaikan masalah khusus ini dengan Komposer dengan menginstal unziputilitas. Di bawah ini adalah contoh menggunakan gambar PHP resmi untuk menginstal unzipdan zipekstensi PHP untuk ukuran yang baik.

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

Ini adalah masalah GitHub yang membantu di mana hal di atas diangkat dengan penuh cinta.

DJ Sipe
sumber
4

Jika Anda menggunakan Ubuntu dan PHP 7.2 , gunakan ini ...

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

Saya mendapatkan kesalahan ini ketika saya menginstal Laravel 5.5 pada server cloud digitalocean saya (Ubuntu 18.04 dan PHP 7.2) dan perintah berikut memperbaikinya.

sudo apt install zip unzip php7.2-zip

Setia
sumber
2

Pada buruh pelabuhan dengan gambar php:7.2-apachesaya hanya perlu zip dan unzip. Tidak perlu untuk php-zip:

apt-get install zip unzip

atau Dockerfile

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

Sebenarnya komposer saat ini tampaknya bekerja tanpa zipperintah baris perintah, jadi menginstal php-zipharus cukup --- TAPI itu akan menampilkan peringatan:

Karena tidak ada perintah 'unzip' file zip terpasang sedang dibongkar menggunakan ekstensi zip PHP. Ini dapat menyebabkan laporan yang tidak valid dari arsip yang rusak. Menginstal 'unzip' dapat memulihkannya.

Lihat juga Apakah ada masalah dengan menggunakan php-zip (komposer memperingatkan tentang hal itu)

Alex
sumber