Прочитать переменную окружения пользователя в php скрипте

0

Я пытаюсь запросить переменные среды, что я установил мой.bashrc файл (я запускаю Ubuntu 14.04) в скриптах PHP, которые выполняются под сервером Apache.

Когда я обращаюсь к getenv ('MY_VAR_NAME') или $ _ENV ['MY_VAR_NAME'] при доступе к странице, кажется, что эти переменные отсутствуют.

Я предполагаю, что когда сценарий был выполнен, пользователь является www-данными, поэтому "MY_VAR_NAME" недоступен.

Существуют ли какие-либо процедуры/рекомендации для таких проблем?

благодаря

  • 0
    Вы можете установить env var уровня apache, например, SetEnv MY_VAR_NAME value_goes_here в файле .htaccess или .conf.
Теги:
environment-variables
ubuntu-14.04

1 ответ

1
Лучший ответ

Я предполагаю, что когда сценарий был выполнен, пользователь является www-данными, поэтому "MY_VAR_NAME" недоступен.

Ваша догадка правильная. :)

Существуют ли какие-либо процедуры/рекомендации для таких проблем?

То, что большинство программистов сделает, это иметь файл конфигурации, содержащий эти переменные. Вы сохранили бы конфигурационный файл в некоторой области, где могли бы получить скрипты PHP - будь то в домашнем каталоге где-нибудь, в /etc. или в каком-либо другом месте, например, в корневом каталоге веб-сайта или рядом с ним.

Различные структуры используют разные подходы к формату файлов конфигурации - некоторые из них - это PHP-скрипты, некоторые из них - файлы YAML, некоторые из них - файлы INI в формате windows/DOS, некоторые - XML, некоторые JSON и т.д.

Лично мне нравится идея сделать это:

  • Храните в простом файле INI только конфигурацию, необходимую для доступа к базе данных.
  • Сохраните всю оставшуюся конфигурацию в таблице базы данных и создайте редактор для тех частей, которые необходимо редактировать.
  • Загрузите содержимое таблицы базы данных конфигурации в memcached.

Однако какой бы метод вы ни использовали, зависит от потребностей вашего приложения.

  • 0
    Сначала спасибо за подробный ответ! похоже, что добавление переменных окружения в "/ etc / apache2 / envvars" сделало свое дело. Ваше решение кажется полезным и масштабируемым, но это немного накладные расходы на то, что мне нужно. Как вы думаете, есть ли риск добавления переменных в apache / envvars?
  • 0
    Основная проблема заключается в том, что файл envvars распространяется на весь сервер, поэтому, если вы запустили несколько сайтов на одном сервере, это было бы бесполезно, поскольку все они имели бы одинаковую конфигурацию.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню