2011年2月8日火曜日

http.confの設定 cgiを動かしたい!

【事件】
あるWEBサーバー(A)に置いてあるexeをキックして(http: //~/hoge.exe)実行しようと、そのパスをクライアントから呼び出してみたところダウンロードの処理が走ってしまう(exeを実行できない)という事象が発生。

http.confを色々探ってみたところ、LoadModule cgi_module "C:/~/mod_cgi.so"
という一文がない為に、cgiの実行ができなかった模様で、これを追加するとダウンロード処理ではなくexeを実行する処理が走りました。

で、一旦解決はしたんですが、
その他の同じような環境(B)のhttp.confを確認してみたところ、それっぽい記載は「LoadModule cgi_module "C:/~/mod_cgi.so"」ではなく「AddModule mod_cgi.c」しかありませんでした。(この設定ファイルをテストしていた環境で使ったらApacheの起動時にAddModuleの部分でエラーが発生しました)

【解決編】↓
AddModuleを使用しているということは、apache1.3系の可能性あり。
確か、AddModuleは2.0になるときに削除されたディレクティブなので。

Aサーバは2.0系で、後に書いた「その他の同じような環境」のサーバが1.3系の可能性が高い。多分、2.×系にAddModuleディレクティブを書いたら、「1.3系のディレクティブが見つかったよ」とエラーが出ているはず。
Bサーバについて、1.3系で「AddModule ~/mod_cgi.c」が書かれているということは、cgiのモジュールは読み込まれているはずなので、後は設定の問題。
exeをcgiとして動かしたいのであれば、exe拡張子をcgi起動できるようにしないといけないので、適当なディレクティブ(動作させたいディレクトリ)に以下を追加。
AddHandler cgi-script .exe
Options ExecCGI
※記載する場所は環境によって違うけど、そのままhttp.confにコンフィグを書いているのであれば、AddHandler、Options共に、追記、もしくは併記(既にhttp.confに存在している場合)してもらえればOK。
多分併記になる
AddHandler cgi-script .cgi と書いてあると思うので
AddHandler cgi-script .cgi .exe
とする。

次に
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
とあると思うので
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
</Directory>
とする。

後は、実行してあげれば.exeの拡張子はcgiとして動く。

0 件のコメント:

コメントを投稿