¿Cómo determinar qué PHP se está utilizando?

10

¿Cómo determinar qué PHP se está utilizando?

Por ejemplo, si hay /usr/local/bin/phpy usr/local/bin/php5, ¿cómo sé cuál está siendo utilizado por mis scripts PHP?

Randell
fuente

Respuestas:

11

Si está utilizando la CLI de PHP, intente utilizar estos comandos de shell (supongo que está utilizando Linux aquí)

which php - will locate the php executable (this should be the default php used by you)
whereis php - The first path displayed will be the location of the php executable
echo $PATH - will print a list of paths separated by ":" where the system looks for commands

Si está utilizando PHP como un módulo de Apache, phpinfo () le dirá la versión de php utilizada y los archivos de configuración de php, NO la ruta de php . Si tiene 2 versiones del ejecutable php, esto le ayudará. Si son la misma versión, entonces no importará cuál es quién :)

Si desea conocer la versión de php, entonces php -v imprimirá la versión de php en la CLI y cualquier módulo Zend instalado.

Si desea conocer los archivos ini incluidos, php --ini mostrará la lista de archivos ini cargados por el módulo php (esto se aplica a la versión CLI).

quamis
fuente
Gracias por todas las entradas. Aparentemente, el whichcomando es lo que necesitaba.
Randell
@Randell: no usar which; utilizar command -ven su lugar. Consulte también Verificar si existe un programa desde un script Bash .
7

Simplemente agregue un script simple

<?php phpinfo(); ?>
Chathuranga Chandrasekara
fuente
¿Esto no se ejecutará phpdesde el inicio de sesión de un usuario; y no necesariamente el php usado por Apache?
5

Suponiendo que está utilizando a través del servidor web:
puede poner la siguiente función en un script:

<?php 
phpinfo(); 
?>

Si esto no funciona, podría deberse a que esta función está deshabilitada en php.ini. Esto a menudo se hace por seguridad. Si este es el caso, tendrá una línea en su php.ini como:

disable_functions = phpinfo

Si este es el caso, cámbielo temporalmente a

disable_functions =

Si está utilizando php para los scripts de Shell:

  1. Debería haber la 'línea shebang' en la parte superior, algo así como

    #! / usr / local / bin / php -q

  2. ¿Estás seguro de que uno no es un enlace smybolic al otro? hacer

    ls -l / usr / local / bin / php

  3. No ;-)

Kyle Brandt
fuente
5

También desde la línea de comandos:

$ php -v

PHP 5.2.6-3ubuntu4 con Suhosin-Patch 0.9.6.2 (cli) (construido: 31 de marzo de 2009 02:11:31) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998- 2008 Zend Technologies

Cooperativas
fuente
¿Esto no se ejecutará phpdesde el inicio de sesión de un usuario; y no necesariamente el php usado por Apache?
1
<?php
// prints e.g. 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();
?>
rkthkr
fuente
0

Si está hablando de sus scripts web llamados por su servidor web Apache y PHP está configurado como un módulo Apache, entonces la respuesta es NINGUNA.

Las ubicaciones que menciona en su pregunta son intérpretes de script de línea de comandos que se llamarían por notación shebang como

 #!/usr/local/bin/php

en la parte superior de su script de línea de comando php

puede llamar a los intérpretes que mencionó por separado, ya que tienen nombres diferentes

# php

llamaría / usr / local / bin / php y

# php5

llamaría / usr / local / bin / php5

Ninguno de esos se usa si usa PHP a través del módulo Apache. Si usa la versión CGI de php, debería aparecer en phpinfo (); salida.


fuente
0
<?php phpinfo(); ?>
Rory
fuente
0
<?php echo shell_exec('which php'); ?>

Esto funciona incluso si no tiene acceso de shell. ;-)

yitwail
fuente
No creo que esto haga lo que la persona que preguntaba estaba buscando. Esto solo le dice lo que el entorno de shell terminaría usando en una búsqueda de RUTA. Ese no es necesariamente el mismo PHP con el que se ejecuta un script.
Theuni