Erro no PHP: “A extensão zip e o comando descompactar estão ausentes, pulando.”

143

Quando executo um composer update, recebo esta mensagem de erro:

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

O que preciso fazer para ativar os comandos zip e descompactar para que o compositor possa baixar dependências?

b85411
fonte
Solução alternativa: use composer update --prefer-source esse problema ao tentar o composer updatephpspec. Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. Estou em um Mac e tive problemas em fazer o Homebrew funcionar para instalar extensões php. Portanto, minha solução rápida foi forçar a composer não precisar usar o zip adicionando a opção --prefer-source. Isso significa que ele baixa o repositório em vez de um pacote compactado. Não é uma solução a longo prazo, mas é útil saber.
John Walker

Respostas:

310

Dependendo do seu sabor das versões Linux e PHP, elas podem variar.

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

Essa é uma pergunta muito comum, você poderá encontrar informações mais úteis no éter pesquisando <distro> php <version> zip extension.

Arrisar
fonte
48
Para o Ubuntu apt-get install php-zipé suficiente
Olaf Dietsche
1
@OlafDietsche Como você sabe / determina quando instalar o php[version]-packagevs php-packagepara um determinado pacote? Gostaria de saber como eu costumo ir apenas com a php[version]-packageversão, mas talvez isso não é ideal ...
elbowlobstercowstand
@elbowlobstercowstand php-<package>é a versão padrão. Esses pacotes dependem apenas da versão mais recente. Se você precisar de uma versão específica (geralmente mais antiga), instale php<version>-<package>.
Olaf Dietsche
Também funciona para # yum install zip unzip php7.2-zip(no CentOS 7) #
Pathros #
1
As pessoas continuam dando instruções para instalar o php-zip, bem como zip / descompactar. Não faz sentido que precise de ambos.
Jgmjgm 13/05/19
45

Para servidores com PHP 5.6

sudo apt-get install zip unzip php5.6-zip
Olawale
fonte
1
Você é um salva-vidas, meu amigo.
Haring10
1
Trabalhou para mim. Obrigado
umarbilal
23

Para o Debian Jessie (que é o padrão atual para a imagem PHP no Docker Hub):

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

Você pode omitir os --sim, mas é útil quando você o executa em um arquivo Docker.

Peter Breuls
fonte
obrigado por compartilhar Peter, poupou-me algum tempo procurando a versão correta de php-zip: D
thaerlabs
23

Para distribuições mais antigas do Ubuntu, ou seja, 16.04, 14.04, 12.04 etc

sudo apt-get install zip unzip php7.0-zip
Goke Obasa
fonte
2
incluindo 16.04
lightup 4/17/17
15

Eu tinha o PHP7.2 em um servidor Ubuntu 16.04 e resolveu o meu problema:

sudo apt-get install zip unzip php-zip

Atualizar

Tentei isso no Ubuntu 18.04 e funcionou também.

Aqib Ashef
fonte
7

Estou usando o Ubuntu e com o seguinte comando funcionou

apt-get install --yes zip unzip

Oscar David
fonte
5

Não para enfatizar o ponto, mas se você estiver trabalhando em um Dockerfile, você resolveria esse problema específico com o Composer instalando o unziputilitário. Abaixo está um exemplo usando a imagem oficial do PHP para instalar unzipe a zipextensão PHP para uma boa medida.

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

Este é um problema útil do GitHub, do qual o acima foi cuidadosamente retirado.

DJ Sipe
fonte
4

Se você estiver usando o Ubuntu e o PHP 7.2 , use este ...

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

Eu recebi esse erro quando instalei o Laravel 5.5 no meu servidor de nuvem digitalocean (Ubuntu 18.04 e PHP 7.2) e o seguinte comando o corrigiu.

sudo apt install zip unzip php7.2-zip

Joyal
fonte
2

Na janela de encaixe com imagem, php:7.2-apacheeu precisava apenas de zip e descompactar. Não há necessidade de php-zip:

apt-get install zip unzip

ou Dockerfile

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

Atualmente, atualmente o compositor parece funcionar sem o zipcomando da linha de comando, portanto a instalação php-zipdeve ser suficiente --- MAS exibiria um aviso:

Como não há um comando 'descompactar', os arquivos zip instalados estão sendo descompactados usando a extensão zip do PHP. Isso pode causar relatórios inválidos de arquivos corrompidos. Instalar 'descompactar' pode remediá-los.

Consulte também Existe algum problema com o uso do php-zip (o compositor adverte sobre isso)

Alex
fonte