11

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?

2 Answers 2

21

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");
Sign up to request clarification or add additional context in comments.

Comments

7

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

2 Comments

Why is this any different from what I am doing above? i.e. export VARIABLE=value && command
it's nearly the same thing. But you don't need to export if you just want the environment to apply to a single script/program. More than one and you're probably better off with putenv()

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.