ドキュメントルート以下の任意のディレクトリでCGIを実行する

Apache から CGI を実行する場合、 ScriptAlias ディレクティブを使って専用のディレクトリにスクリプトが記述されたファイルを設置する場合が多いですが、例えばユーザー用のディレクトリなどドキュメントルートの下にある任意のディレクトリで CGI を実行できるようにすることもできます。ここでは ドキュメントルート以下の任意のディレクトリで CGI を実行できるようにする手順について解説します。

(Last modified: )

指定のディレクトリにCGIの実行を許可する

指定したディレクトリで CGI を実行できるようにするには、ディレクトリに対して Options ディレクティブを使って ExecCGI を追加します。例えばドキュメントルートの下にある mydir ディレクトリで CGI を実行できるようにするには次のように記述します。

<Directory D:/pg/Apache/Apache24/htdocs/mydir>
  Options +ExecCGI
</Directory>

これでこのディレクトリで CGI で記述されたスクリプトの実行が可能となります。

※ Option ディレクティブについて詳しくは「Optionsディレクティブ:ディレクトリで使用可能な機能を設定する」を参照されてください。

指定の拡張子をCGIスクリプトとして扱う

次に .pl や .cgi の拡張子を CGI として実行するスクリプトが記述がされたファイルとして扱うように AddHandler ディレクティブを使って設定します。

<Directory D:/pg/Apache/Apache24/htdocs/mydir>
  Options +ExecCGI
  AddHandler cgi-script .cgi .pl
</Directory>

これで .cgi または .pl の拡張子のファイルは CGI で記述されたスクリプトのファイルと認識され、クライアントからこのファイルへのアクセスがあった場合はスクリプトを実行しその結果をクライアントへ返されるようになります。

httpd.conf ファイルを開き、任意の場所に上記を追加してください。httpd.conf ファイルの更新が終わりましたら Apache を再起動して新しい設定を反映させておいて下さい。これで指定のディレクトリで CGI を利用するための設定は完了です。

CGIが利用できるか確認する

Apache から CGI を利用できるように設定ができたかどうかを確認するために、簡単なスクリプトを作成して動作確認を行います。テキストエディタを開き次のように記述します。

#!C:/pg/Strawberry/perl/bin/perl

print "Content-type: text/html;\n\n";
print "<html><body><p>Test CGI</p></body></html>\n";

上記のファイルを D:/pg/Apache/Apache24/htdocs/mydir ディレクトリに配置します。ファイル名は test.pl としました。(スクリプトファイルの 1 行目は Perl の実行ファイルがある場所です。ご自分の環境に合わせて変更して下さい)。

CGIが利用できるか確認する(1)

ブラウザを起動し http://localhost/mydir/test.pl へアクセスして下さい。次のように test.pl が実行されて結果がブラウザに表示されれば Apache から CGI を利用できるようになっています。

CGIが利用できるか確認する(2)

.htaccessを使って設定する

httpd.conf に設定するのではなく .htaccess ファイルを使って設定する場合には、次の設定を .htaccess ファイルに記述したあと、対象のディレクトリに .htaccess ファイルを設置してください。

Options +ExecCGI

ただし .htaccess ファイルを使用する場合でも、該当のディレクトリで Options ディレクティブの設定を変更できるように httpd.conf ファイルで次の設定が行われていなければなりません。

<Directory D:/pg/Apache/Apache24/htdocs/mydir>
  AllowOverride Options=ExecCGI
  AddHandler cgi-script .cgi .pl
</Directory>

-- --

ドキュメントルート以下の任意のディレクトリで CGI を実行できるようにする手順について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。