2011-01-20 3 views
4

Я пытаюсь установить переменную среды bash с помощью PHP (из командной строки) без успеха.Установить переменную среды извне bash

$buff=array(); 
$buff[]="VARTESTKEY=VARTESTVALUE"; 
$buff[]="export VARTESTKEY"; 
file_put_contents('script.sh', implode("\n",$buff)); 
system('source script.sh'); 

Я даже пытался использовать скрипт для вывода значения ключа, который получает evaled:

$buff=array(); 
$buff[]="echo VARTESTKEY=VARTESTVALUE"; 
file_put_contents('script.sh', implode("\n",$buff)); 
system('eval "$(bash script.sh)"'); 

Но все еще ничего.

Любые идеи? Я не против использовать какой-либо другой инструмент (perl, python, c и т. Д.), Если он может выполнять свою работу, вызывая из системной функции PHP.

+0

Вы получаете какие-либо ошибки прав доступа? Проверьте свой error.log. – powtac

+0

Извините, не упоминал об этом, но это из командной строки. – zaf

ответ

4

Вам нужны переменные окружения перед запуском другого сценария bash?

Вы можете просто использовать putenv("KEY=VAL");

Es:

<?php 
putenv("ASD=LOL"); 
system("echo \$ASD"); 
?> 

Edit:

<?php 
echo "VARTESTKEY=VARTESTVALUE"; 
?> 

запуск его как:

$ eval `php script.php` && echo $VARTESTKEY 
+0

Похоже, что это сработает, если я запускаю какой-то другой скрипт из того же PHP-скрипта. Но не я. Мне нужно, чтобы переменная существовала после завершения PHP-скрипта. – zaf

+0

Итак, вы будете использовать этот скрипт следующим образом: '$ php script.php &&./Other_command.sh'. Я прав? –

+0

Еще более низкотехнологичный: php script.php && echo $ VARTESTKEY – zaf

Смежные вопросы