- ベストアンサー
環境変数の設定
こんにちは。 CGIを書いているのですが、CGIが実行されるときの環境変数の設定方法で悩んでいます。 Apacheを使っているので、httpd.conf内でSetEnvを使えばいいらしいことはわかったのですが、httpd.confを変更するとなると、管理者権限が必要です。 例えば、.htaccessとかで設定できると、環境変数の変更が管理者権限なしで可能になるので、便利なのですが。 なにかよい方法はないものでしょうか?よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
.htaccess中で setenv やsetenvif を使うことは可能ですが http://httpd.apache.org/docs/2.0/ja/mod/mod_env.html#setenv <=setenvの説明文中に .htaccessと明記されています しかしsuexecを使っている場合は setenvなどで定義した値はCGIに伝わりません http://oshiete1.goo.ne.jp/qa2401342.html http://mm.apache.jp/pipermail/apache-users/2003-September/003126.html なのでsuexecの場合は他に方法を考えなくては行けませんが 具体的に何をしたいのかを補足に書いていただけるとアドバイスできるかもしれません 例えば 通常 .htaccessのようにFile名の頭に .htのつく Fileはブラウザでは直接アクセス出来ませんが CGI中でopen文などで開いて読み込むことは可能です。 だので 例えば .ht-user-env などの名前のfileに必要な事柄を記述して CGIでそれを読み込んで それによって処理の内容を変えるとかは出来ます (同様に .htaccess 自体を読み込むことも可能ですが cgiにバグがあるとセキュリティホールになりそう)
その他の回答 (1)
- umasikajiro
- ベストアンサー率67% (545/803)
一応つけたし >.htaccess中で setenv やsetenvif を使うことは可能ですが allowoverrideで記述が許可されていればです http://httpd.apache.org/docs/2.0/ja/mod/core.html#allowoverride
お礼
ありがとうございます。無事に環境変数の設定ができました。 httpd.confで、問題のディレクトリに対して <Directory "........."> AllowOverride FileInfo : : </Directory> .htaccessで、 SetEnv ENV_NAME env_value という形になりました。