UNIXのcgiで環境変数の使用方法について
[上に]
[前に]
[次に]
やまもり
1999/03/01(月) 15:16:43
UNIXでcgiからある環境変数を取得するのですが、通常環境変数は
どこで設定するものなのでしょうか?
・cgi上で環境変数をセットする?
・httpのサービスのどこかで設定する?
・環境変数は使用できない?(固定で使用している環境変数があるから)
B-Cus
1999/03/01(月) 15:40:37
普通、
1.UNIXのプロセス自体に設定されている値
(というか、httpdが子プロセスをfork/execするときに引き継がれる値、かな)
2.httpdが設定する値
です。
1は、PATHなど。
2は、QUERY_STRING、REMOTE_ADDR、HTTP_USER_AGENT、SERVER_NAMEなど。
CGI上で環境変数を書き換えることは、普通しないと思いますが、
必要なら書き換えても構わないでしょう。例えばPATHとかね。
設定されている環境変数を見たいなら、
#!/usr/local/bin/perl
print "Content-type: text/plain\n\n";
foreach ( keys %ENV ){
print "\$ENV{$_} = $ENV{$_}\n";
}
など。
やまもり
1999/03/01(月) 15:52:00
例えば、cgiの中であるディレクトリをみていて、cgiのプログラム
を変更しないでディレクトリ位置を変更したい場合、環境変数を
使用すればプログラムを変更しないで、参照するディレクトリを
変更できるようなると思いますが、httpdが設定する環境変数以外
の環境変数はどこで設定すればよいのでしょうか?
B-Cus
1999/03/01(月) 16:17:55
> 例えば、cgiの中であるディレクトリをみていて、cgiのプログラム
> を変更しないでディレクトリ位置を変更したい場合
意味がよく分かりませんが、例えば
if ( $ENV{HOGE}==1 ){
$dir = "/hoge";
} else {
$dir = "/fuga";
}
opendir(DIR,$dir);
などということですか?
そういう場合は、CGIを呼び出すときに hoge.cgi?hoge=1 などとするのが
一般的だと思います。
やまもり
1999/03/01(月) 18:20:43
[[解決]]
わかりました。ありがとうございます。
[上に]
[前に]
[次に]