Экспортируйте переменную из PHP для окружения

Я пытаюсь установить переменную, которая должна быть доступной снаружи PHP. Идеально это должно быть локальной переменной, но переменные среды также приветствуются.

Во-первых, я попробовал putenv(), но это не дает результата:

$ php-r "putenv ('PHP_TEST=string')";; $PHP_TEST эха

$

Когда я звоню getenv() из того же сценария — это приводит к правильному 'строковому' значению. Безопасный режим выключен, но в руководстве говорится, что 'PHP _' префикс жизненно важен с safe=on, таким образом, я использую его на всякий случай :)

Затем я пробую system() или shell_exec():

$ php-r "shell_exec ('PHP_TEST=string')";; $PHP_TEST эха

$ php-r "shell_exec ('экспортируют PHP_TEST=string')";; $PHP_TEST эха

$

Существует ли обходное решение? какова могла бы быть причина? Я использую "Кармический" Ubuntu Linux 9.10, но сервер FreeBSD дает тот же результат.

5
задан kolypto 4 January 2010 в 23:10
поделиться

2 ответа

Если вы пытаетесь передать какой-то вывод в переменную оболочки, вы можете сделать это так:

$ testvar=$(php -r 'print "hello"')
$ echo $testvar
hello

Показывая, как экспорт влияет на вещи:

$ php -r '$a=getenv("testvar"); print $a;'
$ export testvar
$ php -r '$a=getenv("testvar"); print $a;'
hello

В этих примерах интерактивная оболочка является родительским процессом, а все остальное показывается как дочернее (и как братья и сестры друг друга).

3
ответ дан 14 December 2019 в 19:15
поделиться
[

]Переменные окружения, которые экспортируются, доступны только в дочерних процессах.[

] [

]Таким образом, вы сможете установить переменную окружения, а затем породить дочерний процесс. Переменная окружения будет видна в дочернем процессе. Однако установка ее в []php[] и последующий запуск []последовательного [] процесса ([]echo[], в вашем примере выше) не сработают. [

] [

]Если Вы установите переменную и затем запустите/выпустите новый процесс, то это должно быть видно в новом процессе.[

].
2
ответ дан 14 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: