Сценарий, который я пытаюсь запустить через 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