In message <200203121658.g2CGwdHC002319@mail532.nifty.com>,
`"TAMURA.KENICHI" <sgs02516@nifty.com>' wrote:
> # 2. の『httpd.rb の PATH ...』良く意味が判りませんでした。
親プロセスの ENV["PATH"] を渡す、と言うつもりでした。
> > wwwsrv は、CGI を動かすためのインタプリタを選べるように
> > なってるんですね。
>
> さっきテストしてみたら、
> perl_cgi = WWWsrv::CGIdocument::new("./", false,'perl')
> SERVER.mount(perl_cgi, '/', /\.cgi$/)
>
> な設定でも、shbang 関係なしで動きますね。
> # 拡張子.cgi で Ruby なスクリプトも動作しました。
Perl や Ruby が shebang を解釈するからですね。
> > のようにして、インタプリタを指定できるようにしてみました。
> > (nil の場合は、従来通りに exec します。)
> > Windows ではまだ動かしていないので、もしよければ試しても
> > らえないでしょうか。
>
> 以下のスクリプトで試してみました。一応 /usr/bin/ruby を
> シンボリックリンクで作って試したりしてみました。
> # :CGIInterpreter => '/usr/bin/perl' # 1
> :CGIInterpreter => '/usr/bin/ruby' # 2
> # :CGIInterpreter => '/usr/local/bin/ruby' # 3
> 結果的には、1 の perl(笑 だけ動作します。pnamazu.cgi も正常に動きました。
うぐ、なんでだろ。
> セキュリティとのトレードオフになりますが、Cygwin に関しては、子プロセスの
> クリアをしないという引数を作っていただくか、 RUBY_PLATFORM で判断
> して、'/usr/bin' のみ PATH 設定してやるというのが、一番現実的な気
> がしますです。
RUBY_PLATFORM での場合わけよりも、
:CGIPathEnv => "/usr/bin"
という感じで指定できるのが楽でよいです。クリアしないのと
同等のことがしたければ、ENV['PATH'] をそのまま渡せば済み
そうですし。
:CGIPathEnv という名前が変でなければ追加します。
--
ごとうゆうぞう