Apache 資料一覧

SSIの「#exec cgi」で指定したCGIが実行されない

2008/10/9更新

対応バージョン: 2.2.9

SSIの「#exec cgi」を以下のように記述したが、該当のCGIが実行されない。

<!--#exec cgi="/lib/foo.cgi"-->

CGIが実行されない原因には様々なものがあるのでCGI、呼出側のHTML、サーバの設定(*)それぞれで考えられる原因を挙げる。

(*) 利用者が自分で設定できる.htaccessを含む。

CGI

CGIの実行パスが間違っている
CGIに実行権がない

755や750など、適切な実行権を付ける。

CGIそのものだけでなく、CGIを設置してある場所に至る途中のディレクトリの権限も適切に設定されている必要がある。

CGIを設置できる場所が規定外

サーバの設定で以下のようになっていたら「/cgi-bin」配下にしかCGIを設置できない。

<Directory />
    :
    Options Includes
    :
</Directory>

<Directory /cgi-bin/>
    :
    Options ExecCGI
    :
</Directory>
CGIの拡張子が規定外

サーバの設定で以下のようになっていたら「.cgi」「.pl」以外の拡張子は使えない。

<IfModule mime_module>
    :
    AddHandler cgi-script .cgi .pl
    :
</IfModule>

CGI(ソース)

構文エラー

CGI中に構文エラーがあったり、PerlやRubyなどのスクリプト言語を使う場合に1行目に記述する言語のパスが違っている可能性がある。

例) /usr/binにインストールされているPerlを使用する場合

#!/usr/bin/perl
Content-type行を出力していない

一番最初にContent-type行を出力する必要がある。

例) Perlで記述する場合

print "Content-type: text/html\n\n";

Content-type行の次に空行を出力する必要があることに注意する。

呼出側のHTML

SSIを利用できる場所が規定外

サーバの設定で以下のようになっていたら「/admin」配下でしかSSIが利用できない。

<Directory />
    :
    Options None
    :
</Directory>

<Directory /admin/>
    :
    Options Includes
    :
</Directory>
SSIを利用するHTMLファイルの拡張子が規定外

サーバの設定で以下のようになっていたら「.shtml」以外の拡張子は使えない。

<IfModule mime_module>
    :
    AddHandler server-parsed .shtml
    :
</IfModule>

サーバの設定

SSIを使用する設定になっていない

関連資料・記事