Estou tentando usar o PHP integrado no MacOS Catalina 10.15 compilando sozinho a extensão ZIP.
No novo MacOS Catalina, a phpize
ferramenta não é mais utilizável, pois contém um caminho inválido para as bibliotecas PHP. O volume /usr
é montado somente leitura, tornando inválidos todos os métodos usados no passado.
Eu instaleiXcode 11da AppStore.
Então criei outro phpize
que faz referência ao Xcode, copiando-o para minha área de trabalho
cp /usr/bin/phpize ~/Desktop/
em seguida, abri-o para edição comvim
vim ~/Desktop/phpize
e linha 8 modificada da seguinte forma
includedir = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
Então, baixeiphp-7.3.8, a mesma versão do PHP integrada no MacOS Catalina 10.15.
Depois de descompactar o arquivo na pasta Downloads, abri o Terminal em sua pasta
cd ~/Downloads/php-7.3.8/ext/zip
Uma vez lá dentro, lancei o phpize customizado para preparar a extensão ZIP para configurar
~/Desktop/phpize
A extensão agora é configurável. Eu lancei o configure com caminho adicional para o necessáriozlib
sudo ./configure --with-zlib-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
A próxima etapa seria compilar e instalar, mas ainda estou recebendo o errophp.h file not found
make && make install
Talvez ainda haja um caminho errado em algum lugar...
Responder1
Você pode usar para CPPFLAGS
apontar make
para a direita /usr/include
, que está localizada dentro Xcode.app
:
INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
make CPPFLAGS="-I${INCLUDE_PATH}/php -I${INCLUDE_PATH}/php/main -I${INCLUDE_PATH}/php/TSRM -I${INCLUDE_PATH}/php/Zend -I${INCLUDE_PATH}/php/ext -I${INCLUDE_PATH}/php/ext/date/lib"
Observe também que, ao editar phpize
, não deve haver espaços ao redor do sinal legal ( =
).
EDITAR
Responder ao comentário de acompanhamento make install
também falhará porque não é possível mover a extensão para o lugar certo. Mas você ainda precisa executar o comando, pois ele assinará o *.so
arquivo.
Depois de make install
executado, mova o executável para algum lugar seguro. Eu uso /usr/local/php/extensions
.
Por exemplo com Xdebug
(altere o .so
nome para o nome da sua extensão):
sudo mkdir -p /usr/local/php/extensions
sudo cp $(php-config --extension-dir)/xdebug.so /usr/local/php/extensions
Então você edita a configuração do PHP para habilitar sua extensão sudo nano /etc/php.ini
adicionando as linhas necessárias na parte inferior (não sei a linha exata do zip).
Feito isso, reinicie o servidor integrado para ter certeza:
sudo apachectl restart