2

我使用 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 守护进程

当我调试我的应用程序时,我发现环境变量没有设置。我怀疑 fastcgi 应用程序运行的环境可能与运行“正常”应用程序的环境不同。

有谁知道如何在 fastcgi 应用程序中检索环境变量?

4

2 回答 2

1

鉴于您的观察,我怀疑 fastcgi 进程默认是在“清理”环境中生成的。Apache 当然提供了一种为 fastcgi 设置环境变量的方法。这还有一个额外的好处,就是稍微不那么神秘(谁希望 web 服务在 /etc/environment 更改时表现不同?),就像这样,您将“web config things”与“web config things”保持一致。

于 2011-04-21T11:25:22.920 回答
0

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

于 2011-04-21T11:29:41.760 回答