Как установить переменную среды командной строки в PHP shell_exec

Сценарий, который я пытаюсь запустить через shell_exec в PHP, требует установки переменной окружения, которую afaik выполняет через:

export VARIABLE=value 

Тем не менее, для запуска скрипта я вынужден сделать следующее:

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

Это кажется бессмысленным, что нужно экспортировать переменную каждый раз, когда я запускаю какие-либо команды.

Это единственный способ сделать это, или я пропускаю гораздо более простой способ?

Поскольку переменные окружения наследуются, установка их внутри вашего скрипта будет устанавливать их для команд, которые он запускает. Вам просто нужно использовать putenv .

 putenv("VARIABLE=value"); 

Не будет:

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

Покажи фокус?

Если вы используете несколько сценариев оболочки, то putenv – ваш друг, как указывал zneak.

EDIT с изображением:

env.php:

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

runenv.php:

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

затем попробуйте $ php runenv.php