Невозможно получить новую переменную окружения через getenv - PullRequest
0 голосов
/ 24 октября 2019

У меня Linux Linux (Linux Lite 4) под управлением PHP. Я добавляю пользовательскую переменную окружения в терминале с

export MYVAR=bar

и вижу ее локально после этого с помощью echo $MYVAR, возвращая bar.

Проблема заключается в следующем: когда я подключаюсь к этомусервер через ssh и попробуйте запросить переменную, запустив простой скрипт PHP, расположенный на сервере

<?php
var_dump(getenv('MYVAR'));

Я получаю bool(false). Другие переменные env по умолчанию запрашиваются успешно.

Не стесняйтесь исправлять меня, если я делаю что-то не так.

1 Ответ

3 голосов
/ 25 октября 2019

Env-переменные в UNIX не являются глобальными. Они являются частными для каждого процесса. Когда процесс, такой как ваша интерактивная оболочка, запускает новый процесс, он обычно дает новому процессу копию своих переменных. Поэтому, когда вы определяете новую переменную env в интерактивной оболочке, она не видна уже запущенным процессам, таким как ваш веб-сервер. Он также не виден процессам, таким как ваша php-программа, которые запускаются независимо от оболочки, в которой вы определили env var.

Не зная намного больше о вашей конфигурации, невозможно дать полезный совет,Но, учитывая то, что вы написали, может быть достаточно поместить export MYVAR=bar в ваш ~ / .bashrc (при условии, что bash - это ваша оболочка для входа).

...