在fastcgi应用程序中访问环境变量

时间:2011-04-21 10:51:07

标签: c++ apache fastcgi mod-fastcgi

我使用C和C ++写了一个fastcGI应用程序

如果尚未设置特定的环境变量,我有一个返回字符串的自由函数。该函数如下所示:

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守护程序
  4. 当我调试我的应用程序时,我发现尚未设置环境变量。我怀疑运行fastcgi应用程序的环境可能与运行的环境“正常”应用程序不同。

    有谁知道如何在fastcgi app中检索环境变量?

2 个答案:

答案 0 :(得分:1)

我怀疑默认情况下,fastcgi进程是在“清理”的环境中生成的,根据您的观察结果。 Apache肯定提供了setting environment variables for fastcgi的方法。这还有一个额外的好处,即稍微不那么神秘(谁希望web服务在/ etc / environment更改时表现不同?),像这样你将“web config things”保留为“web config things”。

答案 1 :(得分:0)

您可以在这里查看http://httpd.apache.org/docs/current/env.html并尝试在apache进程中设置env变量。我假设最新的apache版本。