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の環境変数を設定する方法を提供します。これには、暗号化が少し少なくなるという追加のボーナスもあります(/ etc / environmentが変更されたときにWebサービスが異なる動作をすることを誰が期待しますか?)、このように「webconfigthings」を「webconfigthings」で維持します。

于 2011-04-21T11:25:22.920 に答える
0

ここhttp://httpd.apache.org/docs/current/env.htmlを見て、apacheプロセスでenv変数を設定してみてください。最新のApacheバージョンを想定しています。

于 2011-04-21T11:29:41.760 に答える