Apache2をインストールしました。
CGIを利用したいです。
で、cgiファイルを置いてみたのですが、動きませんT_T
cgiファイルのテキストの内容が表示されます。
というわけで、設定を見直します。
Ubuntuの場合は、apache2.confに設定を記述するようです。
さらに、apache2.confの中のInclude設定を見てみると以下のような設定があり
Include mods-enabled/*.load Include mods-enabled/*.conf Include httpd.conf Include ports.conf Include conf.d/ Include sites-enabled/
CGIに関する設定を確認するためにはsites-enabled/000-defaultを参照します。
"sites-enabled/000-default"は"sites-available/default"への
シンボリックリンクになっていますので、defaultファイルを見てみます。
私の環境(Ubuntu 11.10)では、以下のように(一部抜粋)なっていました。
DocumentRoot /var/wwwOptions FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all
設定を見ると、ScriptAliasで記述された箇所は
アクセスした際にcgiとして認識されて処理されるようです。
ただ、今回私がcgiを動かしたい場所は"/var/www/temp"の下なんですよね。。。
というわけで、このままでは動きませんT_T
apache2の設定を調べてみるとDirectoryの設定で
OptionsにExecCGIを設定する必要があるようです。
また、以下の設定が必要なようです。
AddHandler cgi-script .cgi
いまいち、"ExecCGI"と"AddHandler cgi-script .cgi"の関係をイマイチ理解してないのですが^^;
とりあえずどちらも設定しておけってことですかねぇ。。。
というか、設定ファイルをみたら、以下のように書いてありました。
# To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) #
設定しろと。
なので、以下のようにExecCGIを設定し、AddHandler cgi-scriptのコメントアウトを削除しました。
Options ExecCGI Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all
apacheで設定を再読み込みします。
/etc/init.d/apache2 reload
そして、再度アクセスしてみます。
結果、Internal Server Errorが返ってきました。
うむ。とりあえず、CGIとして読み込まれたってことかな。。。^^;