プロが教えるわが家の防犯対策術!

こんにちは。
CGIを書いているのですが、CGIが実行されるときの環境変数の設定方法で悩んでいます。
Apacheを使っているので、httpd.conf内でSetEnvを使えばいいらしいことはわかったのですが、httpd.confを変更するとなると、管理者権限が必要です。

例えば、.htaccessとかで設定できると、環境変数の変更が管理者権限なしで可能になるので、便利なのですが。
なにかよい方法はないものでしょうか?よろしくお願いします。

A 回答 (2件)

.htaccess中で setenv やsetenvif を使うことは可能ですが


http://httpd.apache.org/docs/2.0/ja/mod/mod_env. … <=setenvの説明文中に .htaccessと明記されています
しかしsuexecを使っている場合は setenvなどで定義した値はCGIに伝わりません
http://oshiete1.goo.ne.jp/qa2401342.html
http://mm.apache.jp/pipermail/apache-users/2003- …

なのでsuexecの場合は他に方法を考えなくては行けませんが
具体的に何をしたいのかを補足に書いていただけるとアドバイスできるかもしれません

例えば 通常 .htaccessのようにFile名の頭に .htのつく Fileはブラウザでは直接アクセス出来ませんが
CGI中でopen文などで開いて読み込むことは可能です。
だので 例えば .ht-user-env などの名前のfileに必要な事柄を記述して
CGIでそれを読み込んで それによって処理の内容を変えるとかは出来ます
 (同様に .htaccess 自体を読み込むことも可能ですが cgiにバグがあるとセキュリティホールになりそう)
    • good
    • 0

一応つけたし


>.htaccess中で setenv やsetenvif を使うことは可能ですが
allowoverrideで記述が許可されていればです
http://httpd.apache.org/docs/2.0/ja/mod/core.htm …
    • good
    • 0
この回答へのお礼

ありがとうございます。無事に環境変数の設定ができました。
httpd.confで、問題のディレクトリに対して
<Directory ".........">
AllowOverride FileInfo
:
:
</Directory>

.htaccessで、
SetEnv ENV_NAME env_value

という形になりました。

お礼日時:2008/05/30 15:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!