2010-08-26 15 views
8

El guión que estoy tratando de correr a través de shell_exec en PHP requiere una variable ambiental que se establezcan, que yo sepa se realiza mediante:Cómo establecer comando variable de entorno de línea en PHP shell_exec

export VARIABLE=value 

Sin embargo, para ejecutar el guión me veo obligado a hacer:

<?PHP 
$sOutput = shell_exec("export VARIABLE=value && my_command_goeth_hereth"); 

costuras poco sentido tener a exportar la variable cada vez que ejecute cualquier comando.

¿Es esta la única manera de hacerlo, o me falta una manera mucho más simple?

Respuesta

13

Dado que las variables de entorno se heredan, al establecerlas dentro de la secuencia de comandos, también se establecerán los comandos que se inicien. Solo tienes que usar putenv.

putenv("VARIABLE=value"); 
6

no sólo le permite:

<?PHP 
shell_exec('SOMEVAR=SOMEVAL /some/program'); 

hacer el truco?

Si ejecuta varios scripts de shell, entonces putenv es su amigo, como lo señaló zneak.

EDITAR con un exmaple:

env.php:

<?PHP 
echo $_ENV['FOO']; 
echo "\n"; 

runenv.php:

<?PHP 
echo shell_exec('FOO=bar php env.php'); 

continuación, intente $ php runenv.php

+0

¿Por qué es diferente de ¿Qué estoy haciendo arriba? es decir, 'exportar VARIABLE = value && command' –

+0

es casi lo mismo. Pero no necesita exportar si solo desea que el entorno se aplique a un solo script/programa. Más de uno y probablemente estés mejor con putenv() – timdev

Cuestiones relacionadas