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

标签 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 守护进程

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

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

最佳答案

根据您的观察,我怀疑默认情况下 fastcgi 进程是在“干净”的环境中产生的。 Apache当然提供了setting environment variables for fastcgi的方式.这还有一个额外的好处,那就是稍微不那么神秘(谁希望 web 服务在/etc/environment 更改时表现不同?),就像这样,您将“web config things”与“web config things”保持一致。

关于c++ - 在 fastcgi 应用程序中访问环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743079/

相关文章:

php - 保护外向网站数据库配置

apache - 在 apache 中有条件地设置缓存头

python - Nginx + fastcgi截断问题

c++ - 如何有效地使用 std::async 对指针数组执行操作

c++ - 获取dll中的应用程序路径

c++ - 有没有办法禁止转换为 C++ 中非常量的子类?

c++ - Qt 在自定义渲染控件上绘制小 'x' 图标

c++ - 以PHP方式使用C++的Web开发环境

.htaccess - 如何从 Fast-cgi 中的 codeigniter 中删除 index.php

jQuery 'get' 没有从 C++ FastCGI 应用程序(nginx 网络服务器)收到正确的答案