0 votos

exec("php -v") vs phpinfo() -- diferente versión de php

He actualizado la versión de PHP en mi Mac a 7.3 con un comando

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.3

y luego

export PATH=/usr/local/php5/bin:$PATH

Cuando escribo php -v en el terminal la nueva versión aparece correctamente.


Estoy usando Apache que viene con MacOS.

He creado un documento sencillo en localhost/phpinfo.php que contiene:

echo exec('which php');

echo '<br>';

$out = [];
exec("php -v" , $out);
foreach($out as $line) {
    echo $line, '<br>';
}

phpinfo();

El phpinfo() muestra el nuevo PHP 7.3.8 como se esperaba, pero las líneas anteriores, usando exec() producen un resultado diferente.

enter image description here

Me preguntaba si alguien podría explicar por qué ocurre, si tiene alguna importancia y si es posible solucionarlo.

1voto

Jose Chavez Puntos 645

Esto ocurre porque todavía tienes instalado el binario de PHP más antiguo (probablemente en /usr/bin ).

Cuando cambie su PATH variable de entorno en el comando para incluir /usr/local/bin - esto significa que el shell también busca en esa carpeta (y en ese orden) para encontrar el programa que quieres ejecutar. En este caso, cuando ejecutas php, encuentra la nueva versión en /usr/local/bin y lo ejecuta por ti.

Sin embargo, esa PATH El cambio de la variable de entorno es local sólo para esa sesión de shell. No se guarda en ningún sitio y no se utiliza en otros contextos.

Así, cuando se ejecuta el phpinfo.php script a través del servidor web, se ejecuta con un PATH que no incluye /usr/local/bin . De este modo, se ejecuta el binario PHP más antiguo - mostrando el número de versión antiguo.

Realmente no importa en absoluto - ¿por qué querrías ejecutar un binario PHP desde un script ejecutado por el servidor web de todos modos?

En caso de que realmente quisieras hacer eso y lo quisieras "arreglar", podrías hacerlo cambiando tu exec() para incluir la ruta completa:

exec("/usr/local/bin/php -v" , $out);

o cambiando el PATH para en su contexto PHP script.

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