Доступ к переменной среды в приложении fastcgi - PullRequest
2 голосов
/ 21 апреля 2011

Я написал приложение fastcGI, используя C и C ++

У меня есть бесплатная функция, которая возвращает строку, если конкретная переменная среды не была установлена. Функция выглядит так:

namespace
{
    std::string getNameString()
    {
        char * datastr_ = getenv(MY_ENVAR.c_str());

        if (datastr_)
            return std::string(datastr_);
        return DEFAULT_NAME;
    }
};

Затем я выполняю следующие шаги (в порядке, указанном ниже)

  1. Я отредактировал / etc / environment и добавил соответствующую переменную окружения
  2. Я подтверждаю, что переменная была установлена, набрав printenv на консоли
  3. Я останавливаюсь и затем запускаю демон apache

Когда я отлаживаю свое приложение, я обнаружил, что переменная окружения не была установлена. Я подозреваю, что среда, в которой работает приложение fastcgi, может отличаться от среды, в которой работают «обычные» приложения.

Кто-нибудь знает, как получить переменную среды в приложении fastcgi?

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Я подозреваю, что процессы fastcgi порождаются в «очищенной» среде по умолчанию, учитывая ваши наблюдения. Apache, безусловно, предоставляет способ установки переменных среды для fastcgi . Это дает дополнительный бонус: он немного менее загадочный (кто ожидает, что веб-сервис будет вести себя по-разному при изменении / etc / environment?), Например, вы сохраняете «вещи с веб-конфигурацией» с «вещами с веб-конфигурацией».

0 голосов
/ 21 апреля 2011

Вы можете посмотреть здесь http://httpd.apache.org/docs/current/env.html и попытаться установить переменную env в процессе apache.Я принял последнюю версию Apache.

...