11 votes

Comment définir la variable d'environnement de la ligne de commande en PHP shell_exec

Le script que j'essaie d'exécuter via shell_exec en PHP nécessite la définition d'une variable d'environnement, ce qui, afaik, se fait via :

export VARIABLE=value

Cependant, pour exécuter le script je suis obligé de faire :

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

Il semble inutile de devoir exporter la variable à chaque fois que je lance une commande.

Est-ce la seule façon de procéder, ou ai-je manqué une méthode beaucoup plus simple ?

19voto

zneak Points 45458

Comme les variables d'environnement sont héritées, les définir à l'intérieur de votre script les définira également pour les commandes qu'il lance. Il vous suffit d'utiliser putenv .

putenv("VARIABLE=value");

6voto

timdev Points 25910

Pas seulement :

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

font l'affaire ?

Si vous exécutez plusieurs scripts, alors putenv est votre ami, comme l'a souligné Zneak.

EDITAR avec un exemple :

env.php :

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

runenv.php :

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

alors essayez $ php runenv.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X