■/cgi-bin/ディレクトリ配下においたCGI関連の画像やHTMLが表示できない。

[原 因]

Apacheの/cgi-bin/ディレクトリは、デフォルト設定でユーザからは直接アクセスできないCGIを置くための専用ディレクトリになっている。そこに、CGI以外の画像やHTMLが置かれアクセスされると、ApacheはそれもCGIとみなして処理をしてしまうからである。ログ上は、そのようなファイルはCGIとして動作するはずもないので、エラー500が残る。

[対 処]

対処方法としては以下の方法があるが、簡易なのは3項である。

  1. 画像等を含むCGIは、/cgi-bin/ディレクトリに置かず、ドキュメント用のディレクトリに設置し、ドキュメント用ディレクトリでCGIが実行できるようにする方法。この方法は、管理されたサーバでないと、怪しげなCGIを置かれ実行されるとどうしようもないので、注意が必要である。因みに、おやじはこの方法である。

  2. 当該CGIの設定変更もしくは改造をして、CGIのみを/cgi-bin/ディレクトリに置き、関連する画像等はドキュメント用ディレクトリに設置する方法。プロバイダがカウンタ等のCGIを用意していて、ユーザに開放しているのがこの例である。

  3. /cgi-bin/ディレクトリに設置されていても、画像は画像として処理するように、Apacheを設定する方法。下記のように/cgi-bin/のDirectryディレクティブにAddHandlerで必要な拡張子に対する処理を追加してあげればよい。

    <Directory "/usr/local/apache2/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
        AddHandler image/gif .gif  <-この行を追加
    </Directory>
    

    他の拡張子については、Apacheのconfフォルダ内(場所は異なる場合あり)にmime.typesがあるので、これを参考に必要な拡張子のものを同じように書き足せば良い。

       ex. AddHandler image/jpeg .jpeg .jpg .jpe
            AddHandler image/png .png
            AddHandler text/html .html .htm

Top Pageへ     戻る