instalar ext-zip para Mac

55

Estou tentando executar composer updatee recebo os seguintes erros:

Problem 1
    - The requested PHP extension ext-zip * is missing from your system. Install or enable PHP's zip extension.
  Problem 2
    - maatwebsite/excel 3.1.10 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.11 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.12 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.13 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.14 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.15 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.16 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.17 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.7 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.8 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.9 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.x-dev requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.2.x-dev requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.0 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.1 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.2 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.3 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.4 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.5 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.6 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - phpoffice/phpspreadsheet 1.9.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.8.2 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.8.1 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.8.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.7.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.6.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.5.2 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.5.1 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.5.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.4.1 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.4.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - Installation request for maatwebsite/excel ^3.1.0 -> satisfiable by maatwebsite/excel[3.1.0, 3.1.1, 3.1.10, 3.1.11, 3.1.12, 3.1.13, 3.1.14, 3.1.15, 3.1.16, 3.1.17, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.8, 3.1.9, 3.1.x-dev, 3.2.x-dev].

ao correr composer update

Da noite para o dia, cometi o erro da minha vida e permiti que o meu Mac atualizasse automaticamente o SO, por isso estou no macOS Catalina agora.

Eu tentei adicionar

 "require": {
    "ext-zip": "*",
 }

para o meu compositer.json..mas não está baixando essa extensão.

Abdul
fonte
11
Esse erro significa apenas que seu PHP não possui a php-zipextensão instalada.
Latheesan
Tendo o mesmo problema, phpinfo diz que ele está instalado ... muito estranho ... graças a Apple ...
Jamie Robinson
@JamieRobinson me avise se você encontrou uma solução, por favor!
Abdul
@Abdul melhor que eu tenho até agora é usar o "compositor instalar --ignore-Platform-reqs" ... não é uma solução, mas fica em torno do problema no curto prazo
Jamie Robinson
@ JamieRobinson, para sua informação, alguém respondeu com algo que funcionou para mim.
Abdul

Respostas:

129

Eu tive o mesmo problema depois de atualizar meu Mac para Catalina. Aqui está o que funcionou para mim.

brew update
brew install php@7.3
brew link php@7.3

Em seguida, recarregue seu console.

Ele instalará o php 7.3.10 com o módulo zip. Você pode usar php -v para verificar a versão e php -m para os módulos.

Aldranor
fonte
Muito obrigado! que funcionou como um encanto!
Abdul
2
@Aldranor parece que isso quase funciona, executar uma instalação de fermentação parece um bom plano. No entanto, agora obtendo "Erro: não foi possível vincular o link sbin / php-fpm" "/ usr / local / sbin não é gravável." ... o brew também não executa o sudo ... alguma idéia?
Jamie Robinson
8
Finalmente consertei! A execução "brew doctor" diz que esta pasta não existe e não é gravável e fornece os comandos a serem executados. Executar esses comandos, execute o comando link novamente, recarregar o console, tudo volta ao normal :)
Jamie Robinson
8
use 'brew link --force [email protected]' se você vir este aviso "[email protected] é apenas barril e deve estar vinculado a --force" #
leeCoder
3
Isso funcionou, mas somente depois que adicionei: export PATH="/usr/local/opt/[email protected]/bin:$PATH" export PATH="/usr/local/opt/[email protected]/sbin:$PATH"ao meu .zshrc
Loosie94 30/01
14

O comando a seguir corrigiu o problema no macOS Catalina

brew link php@7.3 --force
Hamza Waleed
fonte
6

Se o link brew não estiver funcionando para você, verifique sua versão do php instalada por:

ls /usr/local/opt/php*

Aqui, você verá uma versão como tal:

/usr/local/opt/php@7.3/bin:$PATH

Deve fornecer uma saída como:

/usr/local/opt/php@7.3:
INSTALL_RECEIPT.json        include
LICENSE                     lib
NEWS                        pecl
README.md                   sbin
bin                         share
homebrew.mxcl.php@7.3.plist

Agora você só precisa vincular isso ao seu $ PATH, o que pode ser feito como:

echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc
source ~/.zshrc

Nota: Estou usando .zshrc porque essa é a minha configuração do terminal. Se o seu é bash, use de acordo.

Você pode verificar qual versão do php agora está vinculada ao seu MacOS executando:

which php

Isso deve fornecer uma saída de:

/usr/local/opt/php@7.3/bin/php

É isso aí. Agora, se você tentar a atualização do compositor, ela não deverá fornecer o problema de extensão.

Fonte (parte dele): https://medium.com/@jjdanek/installing-php-extensions-on-mac-after-homebrew-acfddd6be602

SAVE.US_222
fonte
6

Em 10 de março de 2020, ele funciona para mim:

brew install php  

É o único comando sobre PHP que funciona. Então, acho que os comandos mostrados nas últimas postagens estão obsoletos.

InfiniteRoads
fonte
11
24 de março de 2020 confirmado
Frank Leal
26 de março de 2020 confirmado.
Muhammad Ali
7 de abril conforme
PSN
14 de abril de 2021. Confirmado no futuro.
Pandem1c 15/04
4

Eu tive problemas com o symlink do python durante o brew install php.

/usr/local/Frameworks não existia, então eu tive que criá-lo: sudo mkdir /usr/local/Frameworks

cd /usr/local/

Então eu tive que chown: sudo chown -R myuser:admin Frameworks

Baseei as configurações de permissão no restante das pastas /usr/local.

Então eu poderia correr brew link python. Então eu corri brew install phpnovamente e foi concluído.

php -v agora me dá o php 7.3.10, antes do php 7.3.18, eu acho.

tommyskott
fonte
Eu proporia usar ---> sudo chown -R $ (whoami) bin etc, incluindo lib sbin share var Frameworks <---- em vez de ---> sudo chown -R myuser: admin Frameworks <---
Ben Spi
2

Em vez de vincular à força, você também pode corrigir o problema no MacOS Catalina

adicionando o caminho binário php ao seu perfil do bash, por exemplo:

echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/[email protected]/sbinbin:$PATH"' >> ~/.bash_profile
MDeuerlein
fonte
2

Se você não precisar ext-zip(por exemplo, apenas deseja fazer uma correção rápida), pode usar a --ignore-platform-reqsopção para ignorar os requisitos:

$ composer update --ignore-platform-reqs
bschen
fonte
0

No meu caso, eu tive que simplesmente

brew link --overwrite php
João Felipe Marques Ribeiro
fonte