今野です。

tamagotoka <tamagot...@yahoo.co.jp> wrote:
> apache22を使っているのですが、このapache22のFreeBSD起動時の環境変数(具
> 体的にいうとPATH)の指定はどこで行ったらよいのでしょうか。
> 
> cgiを動かすとき、cgiのpath指定が
> 
> #!/usr/bin/env ruby
> 
> とかだったりするとrubyが見つからず500エラーとなってしまいます。

 CGI で動かすプログラムの PATH 設定を行いたい、という話ですね。

  apache を起動する際の PATH を変えても、確かに希望の動作になり
ます。でも、これは危険なことです。 apache 自身の環境変数 PATH が
変わってしまうと、 apache 関係の他の動作が変わってしまう可能性が
あるわけです。

# 他の CGI で /bin や /usr/bin にないプログラムを起動しようして
# エラーになるはずが、 /usr/local/bin にある同名の別なプログラム
# を起動してしまう可能性がある。

  一つの方法は CGI プログラムを書き換えてその中で PATH を設定す
る方法です。これなら設定変更の影響範囲はその CGI だけで済みます。

  もう一つの方法は、(PATH にない) ruby を起動しようとしてエラー
になるのであれば、 ruby をフルパスで、つまり
/usr/local/bin/ruby と指定することです。フルパスで指定すれば
PATH に関係なく起動できます。

  最後に、apache 自体の設定を行う方法があります。 mod_env モ
ジュールについて調べてみてください。

--
motoyuki

メールによる返信