PHP hatası: “Zip uzantısı ve unzip komutu eksik, atlama.”


144

Çalıştırdığımda composer updatebu hata iletisini alıyorum:

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

Bestecinin bağımlılıkları indirebilmesi için zip ve unzip komutlarını etkinleştirmek için ne yapmam gerekir?


Çözüm: Kullanım phpspec composer update --prefer-source çalışırken bu sorunu vardı composer update. Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. Mac'liyim ve Homebrew'un php uzantılarını yüklemek için çalışmasını sağlamada sorunlar yaşadım. Yani, benim hızlı düzeltme zorlamak oldu composer değil --prefer kaynak seçeneği ekleyerek kullanım zip ihtiyacına. Bu, sıkıştırılmış bir paket yerine repoyu indirdiği anlamına gelir. Uzun vadeli bir çözüm değil ama kullanışlı.
John Walker

Yanıtlar:


311

Linux ve PHP sürümüne bağlı olarak bunlar değişebilir.

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

Bu çok sık sorulan bir soru, arama yaparak eterde daha yararlı bilgiler bulabilirsiniz <distro> php <version> zip extension.


48
Ubuntu apt-get install php-zipiçin yeterli
Olaf Dietsche

1
Yüklemeye ne zaman @OlafDietsche nasıl anlarsınız yapmak / belirlemek php[version]-packagevs php-packageherhangi bir paket için? Ben genellikle sadece php[version]-packagesürümü ile gitmek gibi bilmek isterdim , ama belki de bu optimal değil ...
elbowlobstercowstand

@elbowlobstercowstand php-<package>varsayılan sürümdür. Bu paketler sadece en son sürüme bağlıdır. Belirli (genellikle eski) bir sürüme ihtiyacınız varsa, yüklersiniz php<version>-<package>.
Olaf Dietsche

Aynı zamanda # yum install zip unzip php7.2-zip(CentOS 7'de) çalışır
Pathros

1
İnsanlar php-zip'in yanı sıra zip / unzip'i yüklemek için talimatlar vermeye devam ediyor. Her ikisine de ihtiyacı olduğu mantıklı değil.
jgmjgm

45

PHP 5.6 olan sunucular için

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

1
Sen hayat kurtarıcısın dostum.
Haring10

1
Benim için çalıştı. Teşekkürler
umarbilal

23

Debian Jessie için (Docker Hub'daki PHP görüntüsü için geçerli varsayılan değerdir):

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

--Yes parametresini atlayabilirsiniz, ancak bir Dockerfile içinde çalıştırdığınızda yararlıdır.


Peter paylaştığın için teşekkürler, bana doğru sürümü ararken biraz zaman php-zip
kazandım

23

Daha eski Ubuntu dağıtımları için yani 16.04, 14.04, 12.04 vb.

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

2
16.04 dahil
lightup

16

Bir Ubuntu 16.04 sunucusunda PHP7.2 vardı ve sorunumu çözdü:

sudo apt-get install zip unzip php-zip

Güncelleme

Bunu Ubuntu 18.04 için denedi ve de çalıştı.


7

Ben Ubuntu kullanıyorum ve aşağıdaki komut çalıştı

apt-get install --yes zip unzip


5

Konuyu işaretlemek değil, ancak bir çalışıyorsanız Dockerfile, unzipyardımcı programı yükleyerek Composer ile bu özel sorunu çözersiniz . Aşağıda kullanarak bir örnek Resmi PHP görüntü yüklemek unzipve zipiyi ölçmek için PHP uzantısı.

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

Bu, yukarıdakilerin sevgiyle kaldırıldığı yararlı bir GitHub sorunudur .


4

Eğer kullanıyorsanız Ubuntu ve PHP 7.2 , bunu kullan ...

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

3

Bu hatayı digitalocean bulut sunucuma (Ubuntu 18.04 ve PHP 7.2) yüklediğimde ve aşağıdaki komutu düzelttiğimde aldım.

sudo apt install zip unzip php7.2-zip


2

Görüntü ile docker üzerinde php:7.2-apachesadece zip ve unzip gerekiyordu. Php-zip'e gerek yok:

apt-get install zip unzip

veya Dockerfile

RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "zip"]
RUN ["apt-get", "install", "-y", "unzip"]

1

Aslında besteci bugünlerde zipkomut satırı komutu olmadan çalışıyor gibi görünüyor , bu yüzden yükleme php-zipyeterli olmalıdır - AMA bir uyarı gösterecektir:

Yüklü 'unzip' komutu olmadığından, zip dosyaları PHP zip uzantısı kullanılarak paketten çıkarılıyor. Bu, bozuk arşivlerin geçersiz raporlarına neden olabilir. 'Sıkıştırmayı' kurmak onları düzeltebilir.

Ayrıca bakınız php-zip kullanımıyla ilgili bir sorun var mı (besteci bu konuda uyarıyor)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.