Atascado en la actualización de la versión de PHP en localhost Mojave

Estoy tratando de hacer que PHP7.2 funcione en localhost, pero phpinfo() sigue diciendo que 7.1.19 está en su lugar mientras que ~php -v me dice que PHP7.2.18 está en su lugar.

Ejecuto ~php -v dice:

PHP 7.2.18 (cli) (construido: 2 de mayo de 2019 13:03:01) (NTS) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies con Zend OPcache v7.2.18, Copyright (c) 1999-2018, por Zend Technologies

~echo $RUTA

/usr/local/opt/php@7.2/sbin:/usr/local/opt/php@7.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/ Aplicaciones/VMware Fusion.app/Contents/Public:/opt/X11/bin

Instalé PHP7.2 a través de brew en

➜ php@7.2 pwd
/usr/local/opt/php@7.2

Espero que esté en localhost PHP 7.2.18 en su lugar.

ACTUALIZAR

Seguí estas instrucciones del enlace mencionado por @miken32 ( ¿Cómo usar el php que instaló brew? )

Editado httpd.conf en la carpeta /etc/apache2

#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Si elimino el comentario de la primera línea y comento la segunda línea, puedo ejecutar phpinfo() desde localhost, sin embargo, dice que es PHP 7.1.19 y php -vdice 7.2.18

En caso de que comente la primera línea y descomente la segunda línea, localhost no se iniciará y php -vdice 7.2.18

También seguí estos pasos, pero tampoco tuve suerte.

$ brew update php // get the latest homebrew php packages
$ brew install php@7.2
$ brew link php@7.2 // create an alias to this keg-only version; see comments output during installation
$ echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile // add the alias to your path; see comments output during installation
$ source ~/.bash_profile // reload .bash_profile to use the new settings immediately
$ sudo apachectl restart

También probé la cerveza, link php71 --forcepero eso tampoco ayudó.

Entonces parece que el servidor web no se inicia cuando cambio de línea httpd.conf

¿Algún paso que pueda tomar para obtener 7.2.18?

ACTUALIZAR 2

➜  apache2 sudo apachectl -t  

httpd: error de sintaxis en la línea 178 de /private/etc/apache2/httpd.conf: no se puede cargar /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so en el servidor: dlopen(/usr/local /opt/php@7.2/lib/httpd/modules/libphp7.so, 10): no se encontró ninguna imagen adecuada. Encontré:\n\t/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so: firma de código en (/usr/local/opt/php@7.2/lib/httpd/modules/libphp7 .so) no es válido para su uso en el proceso mediante la validación de la biblioteca: el archivo asignado no tiene cdhash, ¿completamente sin firmar? El código debe estar firmado al menos ad-hoc.\n\t/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so: stat() falló con errno=22

La línea 178 dice:

LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Tengo que investigarlo. En algún lugar de SO en una publicación anterior, se hizo la sugerencia si hay caracteres 'extraños' que podrían causar el error. Verificado y el único extraño es '@'. Sin embargo, esa es la instalación lista para usar de Brew.

En este momento es difícil entender cuál es el problema actual y por qué ha intentado resolver este problema específico. Lo más probable es que esté todo en su texto, pero podría ayudar si pudiera aplicar un poco más de estructura y enfocarse en los puntos clave.

Respuestas (1)

Está intentando utilizar el módulo PHP de HomeBrew con el servidor web Apache proporcionado por Apple. Esa es una configuración no admitida en Mojave.

No funciona porque macOS intenta validar que su software esté correctamente firmado (es decir, no manipulado), y falla esta verificación después de que haya cambiado los archivos binarios que se van a cargar. Puede solucionar esto desactivando SIP (Sistema Protección de integridad), pero esa es una muy mala idea, ya que esto también deshabilitaría la protección en sus otros programas.

La forma correcta de proceder es dejar de usar el servidor web Apache incorporado y, en su lugar, usar un servidor web diferente. La transición más fácil es usar Apache proporcionado por HomeBrew en su lugar.

Puede hacerlo instalando primero Apache desde HomeBrew:

brew install httpd

Luego, evita que macOS inicie Apache proporcionado por Apple en el arranque:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Asegúrese de que la nueva línea del módulo php que ha insertado ahora no esté comentada, y la anterior sí, es decir, que se vea así:

#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Luego inicie la nueva instalación del servidor web Apache:

brew services restart httpd

Dependiendo de su configuración, podrá conectarse con su navegador a localhost:80 o localhost:8080 para ver su sitio.

¡Este realmente me ayudó! Ahora puedo iniciar localhost: 8080 y ver ' ¡ Funciona! .conf, pero ninguno de estos tiene sentido si hago los ajustes necesarios. El que está en /usr/local/etc/httpd no parece tener efecto.
Por lo general, es algo como /usr/local/etc/apache2/2.4/httpd.conf o /usr/local/etc/httpd/httpd.conf, según lo que haya instalado exactamente. Use el comando "brew ls -v httpd" para obtener la lista de archivos instalados y la verá allí.
@ user2037412 Como esta respuesta funcionó para usted, ¡marque la respuesta como aceptada!
¡Gracias! El comando brew ls -v httpd muestra los archivos colocados en '/usr/local/Cellar/httpd/2.4.39/.bottle/etc/httpd'. Hay un archivo httpd.conf. Dada la estructura de carpetas, ¿eso significa que algo anda mal en la configuración?
edité varios archivos httpd.conf e hice después de cada cambio un 'reinicio de servicios de preparación httpd' pero parece que ningún cambio está surtiendo efecto :(
Finalmente desinstalé brew de acuerdo con las instrucciones en el sitio de Brew e hice una nueva configuración basada en Setup Apache y PHP en Mojave y lo hice funcionar. Pffff. Definitivamente lo sería si Apple admitiera PHP 7.2 y superior con su nuevo software.
Los comentarios me ayudaron, ya casi estaba allí. Estaba haciendo esto: LoadModule php7_module /opt/homebrew/opt/php@7.4/lib/httpd/modules/libphp.so en lugar de: LoadModule php7_module /opt/homebrew/opt/php@7.4/lib/httpd/modules/libphp7 .entonces