
Eu juntei o procedimento a seguir a partir de algumas perguntas diferentes aqui e nos fóruns de suporte da Apple. Nenhum deles funcionou por conta própria, mas parece estar próximo. O problema é que acabo com uma extensão não assinada que o MacOS se recusa a carregar; alguém pode me ajudar a resolver esse último (espero) problema?
1. Instale o autoconf.
cd ~/Downloads
curl -O -L http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz
tar -xzf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure
make
sudo make install
2. Instale o automake
cd ~/Downloads
curl -O -L http://ftpmirror.gnu.org/automake/automake-1.15.tar.gz
tar -xzf automake-1.15.tar.gz
cd automake-1.15
./configure
make
sudo make install
3. Instale a libtool
cd ~/Downloads
curl -OL http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz
tar -xzf libtool-2.4.6.tar.gz
cd libtool-2.4.6
./configure
make
sudo make install
4. Instale o CMake
Baixe a imagem do disco em:https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-Darwin-x86_64.dmg
Monte a imagem e arraste o aplicativo para a pasta Aplicativos.
Edite seu arquivo .zshrc (ou crie um em seu diretório inicial, se não tiver um).
Adicione a linha:
export PATH="$PATH:/Applications/CMake.app/Contents/bin"
Salve o arquivo e digite o comando:
source ~/.zshrc
5. Instale o libzip
cd ~/Downloads
curl -OL https://libzip.org/download/libzip-1.5.2.tar.gz
tar -xzf libzip-1.5.2.tar.gz
cd libzip-1.5.2
mkdir build
cd build
cmake ..
make
sudo make install
6. Crie uma cópia temporária do phpize que use as bibliotecas do Xcode
cd ~
cp /usr/bin/phpize ~/Desktop/
Edite a cópia do phpize que está agora na sua área de trabalho e altere esta linha:
includedir="`eval echo ${prefix}/include`/php"
...para:
includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
Salve o arquivo phpize modificado.
7. Baixe o código-fonte da versão correta do PHP – 7.3.9 a partir do MacOS 10.15.1
cd ~/Downloads
curl -O -L https://www.php.net/distributions/php-7.3.9.tar.bz2
tar -yxf php-7.3.9.tar.bz2
cd php-7.3.9/ext/zip
8. Construa a extensão
~/Desktop/phpize
CFLAGS="-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php/main -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php/Zend -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php/TSRM -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php" ./configure --with-zlib-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr --with-php-config=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin/php-config
make
make install
sudo mkdir /usr/local/lib/php/extensions
sudo mv modules/zip.so /usr/local/lib/php/extensions/
NOTA: Espero que make install falhe devido a erros de permissão, mas uma das outras discussões que encontrei sugeriu que esta etapa era necessária para assinar o código. Não parece ter esse efeito, no entanto.
9. Edite o arquivo /etc/php.ini
extension_dir="/usr/local/lib/php/extensions"
extension=zip
10. Teste com comando:
php --version
Resultado
Aviso de PHP: Inicialização do PHP: Não é possível carregar a biblioteca dinâmica 'zip' (tentativa: /usr/local/lib/php/extensions/zip (dlopen(/usr/local/lib/php/extensions/zip, 0x0009): dlopen( ): arquivo não encontrado: /usr/local/lib/php/extensions/zip), /usr/local/lib/php/extensions/zip.so (dlopen(/usr/local/lib/php/extensions/zip. então, 0x0009): assinatura de código em (/usr/local/lib/php/extensions/zip.so) não válida para uso no processo: arquivo mapeado não tem cdhash, completamente não assinado O código deve ser pelo menos assinado ad-hoc? .)) em Desconhecido na linha 0
Responder1
Bom resumo. Eu não precisava de 2 e 3.
Então para a assinatura
11. Você precisa iniciar o XCode e adicionar uma conta.
12.
No terminal, verifique certtool y
sua nova chave de assinatura. É nomeado como:
Common Name : Apple Development:
[email protected] (xxxxxxxx)
Ainda com seu usuário no terminal assine o arquivo (mova-o de volta se não estiver mais na pasta build, caso contrário você terminará com um erro de permissão)
codesign -f -s "Apple Development: [email protected]" /usr/local/lib/php/extensions/zip.so
Mova-o para a pasta de destino, execute php --version
e você terminará com:
Aviso de PHP: Inicialização do PHP: Não é possível carregar a biblioteca dinâmica 'zip' (tentativa: /usr/local/lib/php/extensions/zip (dlopen(/usr/local/lib/php/extensions/zip, 0x0009): dlopen( ): arquivo não encontrado: /usr/local/lib/php/extensions/zip), /usr/local/lib/php/extensions/zip.so (dlopen(/usr/local/lib/php/extensions/zip. então, 0x0009): assinatura de código em (/usr/local/lib/php/extensions/zip.so) não válida para uso no processo:O processo de mapeamento é um binário de plataforma, mas o arquivo mapeado é não)) em Desconhecido na linha 0 PHP 7.3.11 (cli) (construído: 29 de fevereiro de 2020 02:50:36) (NTS)
Ok, procurei na internet (recurso perspicaz), e os bits que encontrei pintam uma imagem escura. Resumidamente:Isso não é mais possível com o Mac Os Catalina.
A mensagem de erro também informa isso. O ambiente PHP é assinado como componente do sistema (binário da plataforma) e é instalado por padrão. O Mac Os Catalina impõe que os binários da plataforma carreguem apenas código que também seja um binário da plataforma. O que você não pode fazer porque você não é a Apple.
Deixando duas opções possíveis. Desativar todo o sistema de aplicação de assinaturas, o que é uma má ideia. Ou configure um PHP substituto completamente selfbuild ou com homebrew.