phpinfo () y php -v muestra diferentes versiones de PHP

18

Quería saber qué phpversión estoy usando, así que escribí el script estándar:

phpinfo();

Lo que me da

PHP version 5.6.10

La versión correcta de PHP necesaria para mi aplicación. Cuando intenté en la terminal:

php -i

o

php -v

Me muestra

PHP version 5.3.2

Lo cual no necesito. Entonces probé con:

which php

Me muestra

/usr/bin/php

Ahora estoy confundido qué versión de PHP estoy usando. Los archivos se cargan en el sitio web de alojamiento y no puedo hacer ningún cambio en los archivos de configuración como httpd.confo php.ini.

Gabf Hann
fuente

Respuestas:

22

Respuesta más corta

¡No entres en pánico! Si le preocupa qué versión de PHP está utilizando su servidor Apache, phpinfo()siempre debe prestar atención a la salida de . El módulo PHP Apache y el binario de línea de comando PHP son dos cosas diferentes que no interfieren entre sí.

De hecho, puede compilar y cargar varias versiones de PHP que desea trabajar con Apache siempre que ajuste Apache para cargarlo correctamente. La interfaz de línea de comandos PHP nunca entrará en juego en el caso de que Apache analice páginas PHP.

La versión de línea de comando de PHP simplemente está ahí para tareas específicas de línea de comando y el módulo PHP para Apache nunca tocará, usará o necesitará eso.

Respuesta larga

Tú dices esto:

Quería saber qué phpversión estoy usando, así que escribí el script estándar:

phpinfo();

Lo que me da la versión de PHP 5.6.10- la versión correcta de PHP necesaria para mi aplicación. Cuando intenté en la terminal:

php -i or php -v   

Me muestra la versión 5.3.2 de PHP que no necesito.

La versión de PHP disponible desde la línea de comandos no tiene nada que ver 100% con la versión de PHP cargada como módulo. Estas son cosas completamente separadas.

Entonces, si le preocupa qué versión de PHP está usando su aplicación web, si phpinfo()muestra la versión 5.6.10 y eso es lo que desea / necesita, está 100% bien.

La versión de línea de comandos de PHP es un elemento del sistema completamente separado. Entonces, lo único que importa es la salida de phpinfo().

Si por alguna razón desea utilizar una versión diferente de PHP con Apache, todo lo que necesita hacer es instalar el módulo compilado de Apache PHP en algún lugar y agregar, o ajustar, esta línea en la configuración de Apache de su sistema:

LoadModule php5_module    /path/to/php/and/the/module/for/apache2/libphp5.so

Y simplemente ajuste la ruta al libphp5.so—que es lo que Apache usa para analizar PHP—, luego reinicie Apache y usted estará en el negocio.

Por ejemplo, en un momento tuve que compilar PHP versión 5.1.6 de la fuente (con soporte de biblioteca GD) para usar en una máquina Ubuntu 12.04 que ejecuta PHP 5.3.5. En el archivo de carga del módulo PHP del servidor aquí:

/etc/apache2/mods-available/php5.load

Tenía líneas como esta:

# LoadModule php5_module        /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module        /usr/lib/apache2/modules/libphp516-gd.so

¿Observe cómo se comenta una línea libphp535.soy la otra no libphp516-gd.sose comenta? Lo que hice fue renombrar el libphp5.somódulo Apache PHP 5.3.5 predeterminado libphp535.socon el número de versión en el nombre para poder tenerlo allí como referencia y luego libphp516-gd.sollamé al módulo PHP 5.1.6 (con soporte de biblioteca GD) para saber qué es eso también lo es. De esta manera, los tengo a mi disposición lado a lado en el sistema.

Y, como dije al principio, la versión de PHP utilizada en la línea de comandos no tiene absolutamente nada que ver con el módulo Apache PHP. Por lo tanto, puede tener cualquier cantidad de versiones diferentes de módulos Apache PHP en el sistema listas para usar; solo ajuste una configuración y reinicie Apache y debería estar todo en el negocio para usar cualquier versión de PHP que especificó que debería usar Apache.

JakeGould
fuente
24

Si tiene este problema al actualizar de PHP5 a PHP7 en Ubuntu 14.04 con Apache, esto es lo que me ayudó (el crédito va aquí ):

Deshabilite el módulo PHP5 en Apache:

sudo a2dismod php5

Ahora habilite PHP7:

sudo a2enmod php7.1

Para reflejar los cambios, se requiere reiniciar Apache:

sudo systemctl restart apache2
Jan Żankowski
fuente
esto puede bloquear el proyecto si php.ini es diferente
KawaiKx
también asegúrese de que las bibliotecas php para la nueva versión estén instaladas, es decir, gd, mcrypt, xml, etc.
korwalskiy
2

Si está intentando ejecutar código PHP desde su servidor web, entonces la versión que está utilizando es la que informa phpinfo()= 5.6.10 .

Aparentemente, su servidor tiene varias versiones de PHP instaladas, y cuando inicia sesión y se ejecuta phpen la línea de comandos, obtiene la versión anterior que está instalada en / usr / bin / php.

Un servidor puede tener muchas versiones de PHP, y el suyo parece tenerlo.

Si necesita ejecutar manualmente el mismo PHP que su servidor web, entonces necesita encontrar la otra versión. Intente ejecutar estos comandos:

/usr/local/bin/php -v
/opt/local/bin/php -v
/opt/bin/php -v

Uno de ellos podría revelar un PHP con la misma versión que su servidor web, y cuando descubra cuál es, puede usar ese en lugar del predeterminado.

Ross Perkins
fuente
0

Si puedo agregar mis 2 centavos ...

Estaba actualizando mi versión de Nextcloud. Cuando ejecuto el procedimiento de actualización, tengo que "sudo php" como usuario de apache, pero se negó a ejecutarse porque la versión de CLI de php ejecutada de manera predeterminada por el usuario de apache era demasiado antigua. Sin embargo, phpinfo (); en mi servidor se muestra la última versión de php instalada.

Me di cuenta de que es porque la variable PATH en el archivo /home/apache/.bashrc se configuró en la primera versión de php que instalé en mi servidor , y nunca se actualizó nuevamente (siempre compilo / instalo php desde la fuente en Github )

La solución:

Cuando actualice php en su servidor web y desee asegurarse de que la versión de php de CLI utilizada sea la más actual cuando sudo como usuario de apache, no olvide cambiarlo en el archivo .bashrc de este usuario, así:

PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH

JeffCourteau
fuente
-1

Pasos para arreglar esto. En primer lugar, qué versión de PHP te está mostrando.

php -v

Ahora necesitará una ruta PHP. Si no lo sabe, puede contactar a su soporte de hosting para la ruta PHP. En mi caso fue

/opt/php71/bin/php

Ahora, es hora de ejecutar este comando en la terminal.

alias php='/opt/php71/bin/php'

Esto cambiará su versión de PHP a PHP 7.1. Si desea cambiarlo a 7.2, puede intentar

alias php='/opt/php72/bin/php'

Estás listo. Verifíquelo con

php -v
Akram Chauhan
fuente
-3

Cree una ruta variable de entorno para la última versión de php, por ejemplo: C: \ wamp64 \ bin \ php \ php7.2.4. Ahora cambie su carpeta de versión de php anterior .php5.6.35 a otro número php5.6.354 .. Luego verifique php -v su wamp servidor y cli php serán lo mismo

sudheep kr
fuente