CGIといえばperlと思いがちですが、CGIというのは「Common Gateway Interface」の略でウェブサーバ上でプログラムを動作させるための仕組みのことです。
□ Common Gateway Interface - Wikipedia
そのプログラムの中で一番メジャーなのがperlであって、別にプログラムがアプリであってもいいんですね。
ちなみにPHPはCGIではありません。(CGIで動かすことも可能)
この辺りは話が長くなりそうなので割愛。

で、今回ちょっとした案件でどうしてもEXEファイル(アプリケーション)をCGIで扱わなければならなくなりまして、その方法を探って見ました。


ポイントになるのは以下の3点です。
  • EXEファイルに実行権を与えることができるか? 
  • EXEファイルのあるディレクトリに実行権を与えることができるか?
  • EXEファイルをCGIとして動作させることが可能か?
ファイルに実行権を与えるのは大体のレンタルサーバーで可能だと思います。
同時にディレクトリに実行権を与えることもできるでしょう。
この辺りはperlを使ったCGIでも日常的にやっていますよね。

一番問題になってくるのはEXEファイル(アプリケーション)をCGIとして動作させるための設定です。
自社サーバーやVPSであればいろいろできるので問題ないでしょう。
それこそ、Apache等、httpデーモンの初期設定、「httpd.conf」を設定することもできると思います。

ただ、共用サーバーの場合はそれができません。
で、代わりに「.htaccess」を使うのですがこれが意外と制限されていて使えない命令が多い。
じつは、僕がよく使っているさくらインターネットのレンタルサーバーでは動きませんでした。

具体的には以下のように「.htaccess」に記入します。
Option +ExecCGI ←CGIの実行を許可
AddHandler cgi-script .exe ←拡張子「.exe」はCGIとして扱う
AddDefaultCharset Shift_JIS ←シフトJISで表示

これで、WebARENAの「SuiteX」やOCNの「メール&ウェブ ビジネス」では動きました。
ぶっちゃけCGIでEXEファイルが使えるとは思っていなかったので目からウロコでしたね。
でも、「これってちょっと危なくない?」とか思ったりもしたのですが大丈夫なのでしょうか?