¿Por qué la versión de PHP es diferente en phpinfo() y CLI?

¿Por qué la versión de PHP es diferente en phpinfo() y CLI?

Me di cuenta de que hay una falta de coincidencia entre la versión de PHP informada por phpinfo()y php -v(en la CLI).

phpinfo():  5.5.24
php -v: 5.6.9

Estoy trabajando en Mac OS X 10.10 (Yosemite) e instalé una biblioteca ( php-version) para intentar administrar las versiones de PHP.

Me reporta 3 versiones diferentes instaladas en mi laptop:

  5.4.41
  5.5.25
* 5.6.9

Me gustaría configurar la misma versión de PHP tanto en Apache como en CLI.

¿Cómo puedo decirle a Apache qué versión de PHP utiliza?

Intenté escribir esta línea en mi httpd.conf:

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

Entonces:

sudo apachectl restart

Pero todo esto no resuelve el problema… En mi información de PHP todavía tengo: 5.5.24

Respuesta1

Aquí hay algunos problemas diferentes que se esconden bajo el concepto de confusión de versiones de PHP, por lo que intentaremos abordar cada uno de ellos lo más claramente posible. Primero esto:

Me di cuenta de que hay una falta de coincidencia entre la versión de PHP informada por phpinfo()y php -v(en la CLI).

phpinfo():  5.5.24
php -v: 5.6.9

PHP CLI no es lo mismo que el módulo PHP Apache.

Como explico en la respuesta aesta otra pregunta aquí, ¡no entrar en pánico! Si le preocupa qué versión de PHP está utilizando su servidor Apache, phpinfo()siempre debe prestar atención al resultado. El módulo Apache PHP y el binario de línea de comando PHP son dos cosas diferentes que no interfieren entre sí.

Simplemente preste atención al resultado de phpinfo()si le preocupa configurar la versión correcta del módulo PHP en Apache.

Dicho esto, parece que todavía tienes problemas para cargar el módulo PHP correcto en Apache:

Intenté escribir esta línea en mi httpd.conf:

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

Asegúrese de que su servidor Apache esté cargando el módulo PHP correcto.

Si bien lo que hiciste técnicamente parece correcto, la única razón por la que veo que esto no funciona es que de alguna manera hay otra LoadModule php5_moduledirectiva en los archivos de configuración de Apache que reemplaza el valor que estás configurando en esa línea.

Recomendaría revisar el httpd.confarchivo, que supongo que se encuentra aquí /etc/apache2/httpd.conf, y ver si tal vez hay otro LoadModule php5_moduleque se perdió o no notó al editar ese archivo. Al mirar mi archivo equivalente en Mac OS X 10.9.5, veo que la línea está comentada (ya que no uso configuraciones Apache/PHP de Mac OS X) y dice algo como esto:

#LoadModule php5_module libexec/apache2/libphp5.so

Por supuesto en tu caso estaría descomentado. Más detalles sobre la configuración de Apache y PHP para desarrollo webse puede encontrar en este sitio.

Considere seriamente usar MAMP como una alternativa a las peculiaridades de Mac OS X Apache/PHP.

Dicho todo esto, no sé qué estás intentando hacer, pero si estás haciendo desarrollo web en un sistema Mac OS X deberías considerar seriamente usarMAMPen lugar de piratear la pila web central de Mac OS X para que todo funcione.

El beneficio de MAMP es que es un equivalente Mac OS X de nivel extremadamente productivo de una pila LAMP. Y dado que está orientado al desarrollo web del mundo real, tiene todos los módulos y configuraciones configurados exactamente como uno debería configurarlos.

El problema principal con Apache y PHP en Mac OS X es que el software generalmente está desactualizado, es complicado configurarlo/modificarlo y administrarlo y es un dolor de cabeza depurarlo cuando suceden cosas como esta. ¿Y qué pasa si llega una actualización de Mac OS X que borra las configuraciones de Apache y PHP que has configurado cuidadosamente? Has vuelto al punto de partida.

Respuesta2

Encontré la solución a mi problema. Después de editar /etc/apache2/httpd.confsolía reiniciar Apache usando:

sudo apachectl restart

Por alguna razón, al usar este comando, Apache no recuperaba las actualizaciones httpd.confni cargaba la configuración anterior.

Usando:

sudo apachectl -k stop
sudo apachectl -k start

Realice una especie de reinicio completo de todos los servicios y también lea las actualizaciones en el archivo de configuración y finalmente lea la nueva ruta para php5_module:

/usr/local/opt/php56/libexec/apache2/libphp5.so

Gracias tambien@Giacomo1968 por su explicación.

Respuesta3

En mi situación (servidor de Windows con Composer instalado), Composer también tenía rutas codificadas a varias extensiones de PHP en php.ini (por ejemplo, extensión=C:/php7-3-27/ext/php_gd2.dll). Entonces necesitaba cambiarlos también. Esto todavía no cambió la versión que se muestra en phpinfo() llamado desde una página web de Apache. Resulta que el compositor también había agregado mi antigua carpeta de la versión de PHP a las variables de entorno PATH, así que tuve que cambiar eso para que apunte a mi nueva carpeta de PHP antes de ver que el cambio de versión surtiera efecto.

Por supuesto, debe asegurarse de que su httpd.conf esté actualizado según las otras respuestas en este hilo. Pero si eso no funciona, verifique cuál es la ruta a php.ini que figura en phpinfo() y verifique estas ^^ cosas también.

información relacionada