2007年6月22日金曜日

rubyのCGIで500 Internal Server Error b

FreeBSDでのお話.
原因はrubyの実行パスが通ってなかった.

よくrubyのCGI(tDiaryとかHikiwikiとか)だと,パスとして

#!/usr/bin/env ruby

で通してある.
でFreeBSDだと実態は/usr/local/bin/rubyになるわけで,envから/usr/local/binのパスが取得できるから実行できるが・・・でもこれだと実行時の環境変数しだいで,動くか否かが変わるよね.

そんな現象に出くわしまして,ApacheをOS起動時のままCGI実行するとエラー.Apacheをユーザー側で再起動かけると,ちゃんとCGI実行できるということがあった.原因としては起動プロセス中に立ち上がったApacehは環境変数がからっぽ(?)らしくて,/usr/local/binのパスが通ってなかったから,env rubyって言われても実行できませんという話.

この辺の仕組みってあまり詳しくないから知らないけど,このやり方って微妙なんじゃないのかなぁと思ったり.結局
#!/usr/local/bin/ruby

と書けば動いた.

0 件のコメント: