简体   繁体   中英

How to set command line environment variable in PHP shell_exec

The script I am trying to run via shell_exec in PHP requires an environmental variable to be set, which afaik is done via:

export VARIABLE=value

However, to run the script I am forced to do:

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

It seams kinda pointless to have to export the variable every time I run any commands.

Is this the only way to do it, or am I missing a much simpler way?

Since environment variables are inherited, setting them inside your script will set them for the commands it launches too. You just have to use putenv .

putenv("VARIABLE=value");

Won't just:

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

do the trick?

If you're running multiple shell scripts, then putenv is your friend, as zneak pointed out.

EDIT with an exmaple:

env.php:

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

runenv.php:

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

then try $ php runenv.php

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM