« Template-ToolkitのVMethods | メイン | Exposeをcaps lockキーに割り当てる »

SuExec環境下のVirtualHostディレクティブでSetEnvを使う

SuExecを使っているとSetEnvディレクティブが使えないため、環境変数を自由に設定することができません。ぐーぐる先生に聞いたところ「HTTP_」で始まる環境変数であれば自由に使えるようでした。VirtualHostの中に書けばドメイン毎に異なる環境変数を設定することができる、と。
環境はApache 1.3.37。

<VirtualHost example.com>
SetEnv HTTP_X_TESTENV 123456789
</VirtualHost>

こんな感じ。

SuExec下ではSetEnvで使える環境変数が制限されるようです。使用可能な環境変数のリストは以下。

# less /usr/ports/www/apache13/work/apache_1.3.37/src/support/suexec.c
char *safe_env_lst[] =
{
    /* variable name starts with */
    "HTTP_",

    /* variable name is */
    "AUTH_TYPE=",
    "CONTENT_LENGTH=",
    "CONTENT_TYPE=",
    "DATE_GMT=",
    "DATE_LOCAL=",
    "DOCUMENT_NAME=",
    "DOCUMENT_PATH_INFO=",
    "DOCUMENT_ROOT=",
    "DOCUMENT_URI=",
    "FILEPATH_INFO=",
    "GATEWAY_INTERFACE=",
    "LAST_MODIFIED=",
    "PATH_INFO=",
    "PATH_TRANSLATED=",
    "QUERY_STRING=",
    "QUERY_STRING_UNESCAPED=",
    "REMOTE_ADDR=",
    "REMOTE_HOST=",
    "REMOTE_IDENT=",
    "REMOTE_PORT=",
    "REMOTE_USER=",
    "REDIRECT_QUERY_STRING=",
    "REDIRECT_STATUS=",
    "REDIRECT_URL=",
    "REQUEST_METHOD=",
    "REQUEST_URI=",
    "SCRIPT_FILENAME=",
    "SCRIPT_NAME=",
    "SCRIPT_URI=",
    "SCRIPT_URL=",
    "SERVER_ADMIN=",
    "SERVER_NAME=",
    "SERVER_ADDR=",
    "SERVER_PORT=",
    "SERVER_PROTOCOL=",
    "SERVER_SOFTWARE=",
    "UNIQUE_ID=",
    "USER_NAME=",
    "TZ=",
    NULL
};

参考
http://www.hozen.org/ml/1/thread/3126

コメントを投稿

About

2009年02月25日 03:17に投稿されたエントリーのページです。

ひとつ前の投稿は「Template-ToolkitのVMethods」です。

次の投稿は「Exposeをcaps lockキーに割り当てる」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。