CGI利用に関するApacheの設定

広告

現在利用しているWindows用のXAMPPのバージョンではPerlは「Strawberry Perl 7.0.42 Portable」というものが利用できるようになっています。CGIプログラムをApache上で実行させる場合にPerlを利用したりしますが、まずはCGIに関する設定がどのようになっているのかを確認します。

Apacheの設定ファイルである「http.conf」ファイルは「(XAMPPインストールディレクトリ)\apache\conf\」に含まれています。

p2-1

「http.conf」ファイルはテキストファイルですのでテキストエディタで開いて下さい。

257行目付近を見てください。

<Directory "C:/xampp/htdocs">
    Options FollowSymLinks Includes ExecCGI

    AllowOverride All

    Require all granted
</Directory>

「c:/xampp/htdocs」はApacheのドキュメントルートです。ここではドキュメントルート以下のディレクトリに対して「ExecCGI」を設定していますのでどこでもCGIが実行できるようになっています。

次に417行目付近を見てください。

<IfModule mime_module>
    TypesConfig conf/mime.types

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    AddHandler cgi-script .cgi .pl .asp

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

「ExecCGI」が許可されたディレクトリの中で、どのような拡張子のファイルがCGIのファイルなのかを指定します。ここでは拡張子が「.cgi」「.pl」「.asp」のファイルをCGIとして指定しています。

次に362行目付近を見てください。

<IfModule alias_module>

    ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"

</IfModule>

ScriptAcliasによって「/cgi-bin/」が「C:/xampp/cgi-bin/」にマッピングされると同時にこのディレクトリでのCGIの実行が許可されます。なおマッピングとは「http://localhost/cgi-bin/test.cgi」とアクセスがあった場合に「C:/xampp/cgi-bin/test.cgi」を実行するという意味です。このディレクトリ内にあるファイルはmod_cgiのcgi-script ハンドラで処理されます(つまり拡張子に関係なくCGIとして処理されます)。

次に378付近を見てください。

<Directory "C:/xampp/cgi-bin">
    AllowOverride All
    Options None
    Require all granted
</Directory>

先ほどScriptAcliasによってマッピングの対象となった「C:/xampp/cgi-bin/」に対しての設定です。

まず「AllowOverride None」によってこのディレクトリに含まれるサブディレクトリでは設定変更できなくしています。「Options None」で特別な機能は全て無効となります(ただしScriptAcliasによって指定されていますのでCGIは実行できます)。そして「Require all granted」で全てのアクセスを許可しています。

CGIプログラムとしてPerlを利用する場合は、Perlで記述されたプログラムファイルの拡張子を「.cgi」や「.pl」とするか、または「C:/xampp/cgi-bin/」ディレクトリに配置するようにして下さい。

( Written by Tatsuo Ikura )