Estoy intentando utilizar PHP integrado en MacOS Catalina 10.15 compilando la extensión ZIP yo mismo.
En el nuevo MacOS Catalina, la phpize
herramienta ya no se puede utilizar porque contiene una ruta no válida a las bibliotecas PHP. El volumen /usr
está montado como de solo lectura, lo que invalida todos los métodos utilizados en el pasado.
lo instaléXcódigo 11desde la tienda de aplicaciones.
Luego creé otro phpize
que hace referencia a Xcode copiándolo en mi escritorio.
cp /usr/bin/phpize ~/Desktop/
luego lo abrió para editarlo convim
vim ~/Desktop/phpize
y modificó la línea 8 de la siguiente manera
includedir = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
Luego, descargadophp-7.3.8, la misma versión de PHP integrada en MacOS Catalina 10.15.
Después de descomprimir el archivo en la carpeta Descargas, abrí la Terminal en su carpeta.
cd ~/Downloads/php-7.3.8/ext/zip
Una vez dentro, inicié el phpize personalizado para preparar la extensión ZIP a configurar.
~/Desktop/phpize
La extensión ahora es configurable. Lancé configurar con una ruta adicional al requeridozlib
sudo ./configure --with-zlib-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
El siguiente paso sería compilar e instalar, pero sigo recibiendo el error.php.h file not found
make && make install
Quizás todavía haya un camino equivocado en alguna parte...
Respuesta1
Puedes utilizar para CPPFLAGS
señalar make
a la derecha /usr/include
, que se encuentra dentro de 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"
También tenga en cuenta que, al editar phpize
, no debe haber espacios alrededor del signo legal ( =
).
EDITAR
Para abordar el comentario de seguimiento, make install
también fallará porque no puede mover la extensión al lugar correcto. Pero aún necesitas ejecutar el comando ya que firmará el *.so
archivo.
Una vez make install
ejecutado, mueva el ejecutable a un lugar seguro. Yo suelo /usr/local/php/extensions
.
Por ejemplo con Xdebug
(cambie el .so
nombre por el nombre de su extensión):
sudo mkdir -p /usr/local/php/extensions
sudo cp $(php-config --extension-dir)/xdebug.so /usr/local/php/extensions
Luego edita la configuración de PHP para habilitar su extensión sudo nano /etc/php.ini
agregando las líneas necesarias en la parte inferior (no sé la línea exacta para zip).
Una vez hecho esto, reinicie el servidor integrado para estar seguro:
sudo apachectl restart