Помилка PHP: "Розширення zip та команда розпакування відсутні, пропускаються".


144

Коли я запускаю, composer updateя отримую це повідомлення про помилку:

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

Що мені потрібно зробити, щоб включити команди zip та unzip, щоб композитор міг завантажувати залежності?


Усунення: Використовуйте composer update --prefer-source цю проблему у мене під час спроби composer updatephpspec. Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. Я на Mac і у мене виникли проблеми з тим, щоб Homebrew працював над встановленням розширень php. Отже, моє швидке виправлення було змусити composer не потрібно використовувати zip, додавши параметр --prefer-source. Це означає, що він завантажує репо замість пакету-блискавки. Не довгострокове рішення, але зручно знати.
Джон Уокер

Відповіді:


311

Залежно від вашого смаку версій Linux та PHP вони можуть відрізнятися.

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

Це дуже поширене запитання, ви зможете знайти більше корисної інформації в ефірі шляхом пошуку <distro> php <version> zip extension.


48
Для Ubuntu apt-get install php-zipдостатньо
Олаф Дієтче

1
@OlafDietsche Як ви знаєте / визначаєте, коли встановити php[version]-packagevs php-packageдля будь-якого пакету? Я хотів би знати, як я зазвичай просто йду з php[version]-packageверсією, але, мабуть, це не оптимально ...
elbowlobstercowstand

@elbowlobstercowstand php-<package>- це версія за замовчуванням. Ці пакети просто залежать від останньої версії. Якщо вам потрібна певна (як правило, старша) версія, ви встановлюєте php<version>-<package>.
Олаф Дієш

Він також працює для # yum install zip unzip php7.2-zip(на CentOS 7)
Pathros

1
Люди продовжують давати інструкції щодо встановлення php-zip, а також zip / unzip. Немає сенсу, що вона потребує обох.
jgmjgm

45

Для серверів з PHP 5.6

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

1
Ти - рятувальник життя, друже.
Haring10

1
Працювали для мене. Спасибі
umarbilal

23

Для Debian Jessie (який є поточним за замовчуванням для зображення PHP на Docker Hub):

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

Ви можете опустити --yes, але це корисно, коли ви будете РОБИТИ його в Dockerfile.


дякую за те, що поділився Пітером, врятував мені час, шукаючи потрібну версію php-zip: D
thaerlabs


16

У мене був PHP7.2 на сервері Ubuntu 16.04, і це вирішило мою проблему:

sudo apt-get install zip unzip php-zip

Оновлення

Спробував це для Ubuntu 18.04 і також працював.



5

Не заважати точці, але якщо ви працюєте в a Dockerfile, ви вирішите цю проблему з Composer, встановивши unzipутиліту. Нижче наводиться приклад використання офіційного PHP-зображення для встановлення unzipта zipрозширення PHP для хорошої міри.

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

Це корисна проблема GitHub, звідки з любов'ю знято вище.


4

Якщо ви використовуєте Ubuntu та PHP 7.2 , використовуйте це ...

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

3

Цю помилку я отримав, коли встановив Laravel 5.5 на мій хмаровий сервер digitalocean (Ubuntu 18.04 та PHP 7.2) і виправила його наступна команда.

sudo apt install zip unzip php7.2-zip


2

На докері з зображенням php:7.2-apacheмені просто знадобився zip та unzip. Не потрібно php-zip:

apt-get install zip unzip

або Dockerfile

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

1

Насправді композитор на сьогоднішній день, здається, працює без zipкоманди командного рядка, тому встановлення php-zipповинно бути достатньо --- АЛЕ воно відображатиме попередження:

Оскільки немає команди "розпакувати", встановлені zip-файли розпаковуються за допомогою розширення PHP zip. Це може призвести до недійсних повідомлень про пошкоджені архіви. Встановлення "разархівувати" може переправити їх.

Дивіться також Чи є проблема із використанням php-zip (композитор попереджає про це)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.