1 votos

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

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

Si 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 $PATH

/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

He instalado PHP7.2 a través de brew en

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

Espero obtener en localhost PHP 7.2.18 en su lugar.

ACTUALIZACIÓN

He seguido estas instrucciones del enlace mencionado por @miken32 ( ¿Cómo utilizar el php que brew instaló? )

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 descomento la primera línea y comento la segunda, puedo ejecutar phpinfo() desde localhost, sin embargo dice que es PHP 7.1.19 y php -v dice 7.2.18

Si comento la primera línea y descomento la segunda, localhost no arranca y php -v dice 7.2.18

También seguí estos pasos, pero tampoco hubo 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 --force pero eso tampoco ayudó.

Así que parece que el servidor web no se inicia cuando cambio las líneas httpd.conf

¿Algún paso que pueda dar para poner en marcha la 7.2.18?

ACTUALIZACIÓN 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 servidor: dlopen(/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so, 10): no se ha encontrado ninguna imagen adecuada. Hizo encontrado: \n\t /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so: código firma en (/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so) no es válida para su uso en el proceso que utiliza la validación de bibliotecas: el archivo mapeado no tiene cdhash, completamente sin firma? El código tiene que estar al menos ad-hoc firmado. \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

Hay que investigarlo. En algún lugar de SO en un post más antiguo se sugirió si hay algún carácter "extraño" que pueda causar el error. Lo verifiqué y el único extraño es '@'. Sin embargo, eso es la instalación de Brew fuera de la caja.

0 votos

Ahora mismo es difícil entender cuál es el problema actual y por qué ha intentado resolver este problema concreto. Lo más probable es que todo esté en tu texto, pero podría ayudar si pudieras aplicar algo más de estructura y centrarte en los puntos clave.

0voto

Jose Chavez Puntos 645

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

No funciona porque MacOS intenta validar que su software está correctamente firmado (es decir, que no ha sido manipulado), y falla esta comprobación después de que usted haya cambiado los binarios que se van a cargar. Puedes arreglar esto desactivando el SIP (System Integrity Protection) - pero es una muy mala idea, ya que esto desactivaría la protección en tus otros programas también.

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

Puedes hacerlo instalando primero Apache desde HomeBrew:

brew install httpd

Entonces evita que MacOS inicie el 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 es ahora no comentado, y el viejo es - es decir, hacer 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

A continuación, 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.

0 votos

Este me ayudó mucho. Ahora puedo empezar localhost:8080 y ver "¡Funciona!". Queda una cosa, ¿dónde puedo encontrar el httpd.conf para hacer los cambios necesarios para f.i. apuntar a /Users/<username>/Sites? He encontrado varios archivos httpd.conf, pero ninguno tiene sentido si hago los ajustes necesarios. El que está en /usr/local/etc/httpd no parece tener efecto.

0 votos

Normalmente es algo como /usr/local/etc/apache2/2.4/httpd.conf o /usr/local/etc/httpd/httpd.conf, dependiendo de lo que hayas instalado exactamente. Utilice el comando "brew ls -v httpd" para obtener la lista de archivos instalados, y lo verá allí.

0 votos

@user2037412 Como esta respuesta hizo que las cosas funcionaran para ti, por favor marca la respuesta como aceptada.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X