
He improvisado el siguiente procedimiento a partir de un par de preguntas diferentes aquí y en los foros de soporte de Apple. Ninguno de ellos ha trabajado por su cuenta, pero esto parece estar cerca. El problema es que termino con una extensión sin firmar que MacOS se niega a cargar; ¿Alguien puede ayudarme a resolver el último (espero) problema?
1. Instale la configuración automática.
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. Instalar 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 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 CMake
Descargue la imagen del disco desde:https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-Darwin-x86_64.dmg
Monte la imagen y arrastre la aplicación a su carpeta de Aplicaciones.
Edite su archivo .zshrc (o cree uno en su directorio de inicio si no tiene uno).
Añade la línea:
export PATH="$PATH:/Applications/CMake.app/Contents/bin"
Guarde el archivo y escriba el comando:
source ~/.zshrc
5. Instale 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. Cree una copia temporal de phpize que use las bibliotecas de Xcode
cd ~
cp /usr/bin/phpize ~/Desktop/
Edite la copia de phpize que ahora está en su escritorio y cambie esta línea:
includedir="`eval echo ${prefix}/include`/php"
...a:
includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
Guarde el archivo phpize modificado.
7. Descargue el código fuente para la versión correcta de PHP - 7.3.9 a partir de 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. Construya la extensión
~/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 falle debido a errores de permisos, pero una de las otras discusiones que encontré sugirió que este paso era necesario para firmar el código. Sin embargo, no parece tener ese efecto.
9. Edite el archivo /etc/php.ini
extension_dir="/usr/local/lib/php/extensions"
extension=zip
10. Prueba con comando:
php --version
Resultado
Advertencia de PHP: Inicio de PHP: No se puede cargar la biblioteca dinámica 'zip' (probado: /usr/local/lib/php/extensions/zip (dlopen(/usr/local/lib/php/extensions/zip, 0x0009): dlopen( ): archivo no encontrado: /usr/local/lib/php/extensions/zip), /usr/local/lib/php/extensions/zip.so (dlopen(/usr/local/lib/php/extensions/zip. entonces, 0x0009): la firma del código en (/usr/local/lib/php/extensions/zip.so) no es válida para su uso en el proceso: el archivo mapeado no tiene cdhash, no está completamente firmado. ¿El código debe estar al menos firmado ad-hoc? .)) en Desconocido en la línea 0
Respuesta1
Buen resumen. No necesitaba 2 y 3.
Luego para la firma
11. Debe iniciar XCode y agregar una cuenta.
12.
En la terminal consulte con certtool y
su nueva clave de firma. Se llama así:
Common Name : Apple Development:
[email protected] (xxxxxxxx)
Aún con su usuario en la terminal, firme el archivo (muévalo nuevamente si ya no está en la carpeta de compilación; de lo contrario, terminará con un error de permiso)
codesign -f -s "Apple Development: [email protected]" /usr/local/lib/php/extensions/zip.so
Muévalo a la carpeta de destino, ejecútelo php --version
y terminará con:
Advertencia de PHP: Inicio de PHP: No se puede cargar la biblioteca dinámica 'zip' (probado: /usr/local/lib/php/extensions/zip (dlopen(/usr/local/lib/php/extensions/zip, 0x0009): dlopen( ): archivo no encontrado: /usr/local/lib/php/extensions/zip), /usr/local/lib/php/extensions/zip.so (dlopen(/usr/local/lib/php/extensions/zip. entonces, 0x0009): la firma del código en (/usr/local/lib/php/extensions/zip.so) no es válida para su uso en el proceso:El proceso de mapeo es un binario de plataforma, pero el archivo mapeado es no)) en Desconocido en la línea 0 PHP 7.3.11 (cli) (compilado: 29 de febrero de 2020 02:50:36) (NTS)
Ok, busqué en Internet (recurso perspicaz), y los bits que encontré pintan una imagen oscura. En breve:Ya no es posible con Mac Os Catalina.
El mensaje de error también lo dice. El entorno PHP está firmado como componente del sistema (binario de plataforma) y se instala de forma predeterminada. Mac Os Catalina exige que los binarios de la plataforma solo carguen código que también es un binario de la plataforma. Lo cual no puedes hacer, porque no eres Apple.
Dejando dos opciones posibles. Deshabilitar todo el sistema de aplicación de firmas, lo cual es una mala idea. O configure un Php de reemplazo completamente autoconstruido o con homebrew.