Perlに関するApacheの設定

広告
facebookボタン
googleplusボタン
twitterボタン
ダミーボタン
bloggerボタン

Apacheの設定ファイルである「http.confファイル」の中でPerlの利用に関する部分について確認していきます。「http.conf」ファイルは「(XAMPPインストールディレクトリ)¥apache¥conf¥」に含まれています。

p2-1

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

209行目からを見てください。

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

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

425行目を見てください。

AddHandler cgi-script .cgi

「ExecCGI」が許可されたディレクトリの中で、どのような拡張子のファイルがCGIのファイルなのかを指定します。ここでは拡張子が「.cgi」のファイルをCGIとして指定しています。209行目の設定と合わせて、ドキュメントルート以下のファイルの中で拡張子が「.cgi」のファイルはcgi-script ハンドラで処理されます(CGIとして実行されます)。

少し前に戻って328行目を見てください。

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

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

336行目からを見てください。

<Directory "D:/xampp/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

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

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

mod_perlに関する設定

529行目を見てください。

Include conf/extra/perl.conf

XAMPPのPerlアドオンをインストールするとこの行が追加されます。Perlに関する追加の設定が書かれた「perl.conf」ファイルが読み込まれます。「perl.conf」ファイルは「(XAMPPインストールディレクトリ)¥apache¥conf¥extra¥」に含まれています。

p2-2

なお同じディレクトリに「startup.pl」がありますが、こちらはmod_perlを有効にするための起動ファイルで「perl.conf」の中で読み込まれています。

では「perl.conf」の内容を見てみます。

Alias /perl "D:/xampp/htdocs/modperl/"
<Directory "D:/xampp/htdocs/modperl/">
SetHandler perl-script 
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
</Directory>

<Files *.pl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
</Files>

PerlModule Apache::ASP
Alias /asp "D:/xampp/htdocs/modperlasp/"
<Directory "D:/xampp/htdocs/modperlasp/">
   SetHandler  perl-script
   PerlResponseHandler Apache::ASP
   PerlSetVar  Global .
   PerlSetVar  StateDir "D:/xampp/tmp"
</Directory>

mod_perlに関する設定のようなのですが、現時点でそれほど理解していません。(ディレクトリに関係無く)拡張子が「.pl」のファイル、また拡張子に関係無く「D:¥xampp¥htdocs¥modperl¥」と「D:¥xampp¥htdocs¥modperlasp¥」ディレクトリに対してmod_perlのperl-scriptハンドラを使って処理されるように設定がされているようです。

またマッピングが設定されており「http://localhost/perl/test.pl」とアクセスがあった場合に「D:¥xampp¥htdocs¥modperl¥test.pl」を実行し、「http://localhost/asp/test.pl」とアクセスがあった場合に「D:¥xampp¥htdocs¥modperlasp¥test.pl」を実行します。

まとめ

以上のことをまとめると次の通りです。

・ディレクトリに関係なく拡張子が「.pl」のものはperl-scriptハンドラを使って処理される
・D:¥xampp¥htdocs¥modperl¥ と D:¥xampp¥htdocs¥modperlasp¥ 以下のファイルは拡張子に関係
  なくperl-scriptハンドラを使って処理される
・D:¥xampp¥cgi-bin¥ 以下のファイルは「.pl」を除き拡張子に関係なくcgi-scriptハンドラで処理
  される
・上記ディレクトリ以外の場所では拡張子が「.cgi」のものはcgi-scriptハンドラを使って処理される

( Written by T.buzz.Ikura+ )

Social Button
Facebook Page