Я хочу передать переменную среды в Linux апачу на запуске.
MYVAR=5 экспорта - я определяю свою переменную среды на командной строке
PassEnv MYVAR - апач набора для импорта переменной в апачском файле конфигурации
перезапуск apachectl - когда я перезапускаю апача, я не получаю сообщение об ошибке. Однако я заметил, что, если я не создаю переменную среды в своем первом шаге, я получаю предупреждающее сообщение, так должен работать здесь
$ эха _SERVER ['MYVAR'] - я пытаюсь получить доступ к переменной среды в PHP, но это не определяется
Я заметил, что, если я пробую к PassEnv переменную среды, которая уже выходит (тот, который я havn't создал сам) он хорошо работает. Директива SetEnv также хорошо работает.
Я действительно хотел бы передать переменную среды апачу на лету, не пишущий это в файле. Помогите многому ценившему.
Я использую CentOS, PHP5 и Apache2.
Спасибо.
обновление это кажется переменной среды, передается, если я вызываю апачский запуск непосредственно с httpd и не использую apachectl, который является сценарием оболочки. Я думал бы, что "экспорт" экспортирует переменную в сценарий оболочки нет? Я не гуру Linux, так извините мое отсутствие знаний.
Если вы хотите, чтобы переменная окружения передавалась apache, вы должны убедиться, что эта переменная окружения определена для окружения, в котором работает apache. Для этого проще всего добавить строку export MYVAR=value
в envvars (должен находиться в /etc/apache2) или в скрипт, запускающий apache (в /etc/init.d), и добавить вашу PassEnv MYVAR туда, где она нужна в конфигурации apache.
Перезапуск apache должен убедиться, что переменная окружения MYVAR передана. AFAIK вы не сможете изменить значение этой переменной во время работы apache, хотя...
Некоторая соответствующая информация для CentOS : http://php.dzone. com/news/inserting-variable-headers-apa&default=false&zid=159&browser=16&mid=0&refresh=0
Вы должны получить доступ к переменным среды, используя суперглобальный $ _ENV
:
$ _ENV ['MYVAR']
http://www.php.net/ manual / en / reserved.variables.environment.php
Обновление
Ваша переменная может фактически находиться в $ _ SERVER
после того, как по ссылке ниже. Тем не менее, стоит проверить $ _ ENV
.
Согласно http://www.php.net/manual/en/reserved.variables.environment.php#97105