スクリプト実行パス(shebang)の設定に関して

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

ApacheではWindows環境であってもスクリプト実行パスを参照します。スクリプト実行パスとは1行目に記述されている下記の部分です。

#!/xampp/perl/bin/perl

print "Content-type: text/plain¥n¥n";
print "Hello !¥n";
print "$ENV{'MOD_PERL'}";

「#!」の後にスクリプトを実行するプログラムを指定するものですが、XAMPPでインストールした場合はPerlスクリプトを実行するプログラムは「(XAMPPをインストールしたディレクトリ)¥perl¥bin¥perl.exe」ですので上記のように記述しておけば問題ありません。

ただ新規にスクリプトを記述する場合はいいのですが、多くのPerlスクリプトは「#!/user/bin/perl」となっています。これらのスクリプトをXAMPP環境で動かすには「#!/user/bin/perl」を「#!/xampp/perl/bin/perl」に書き換えなければなりません。

そこで方法としては二つあります。1つめはhttp.confファイルの中で適切なディレクトリに対して「ScriptInterpreterSource registry」を設定します。これはWindowsのファイルの関連付けを参照してスクリプトを実行するように指示するものです。この設定を行うとスクリプト実行パスの記述の有無に関わらず実行するファイルの拡張子に関連付けされたプログラムを使ってスクリプトが実行されます。

ただこの方法はセキュリティ的にあまり望ましくありません。例えば全てのファイルのスクリプトの実行が許可されたディレクトリに対して「ScriptInterpreterSource registry」が設定されていると、「.html」ファイルに対するアクセスがあっただけでも「.html」に関連付けられたプログラムが起動します。(例えばサーバ側でブラウザが起動するなど)。

よって今回は「D:¥user¥」ディレクトリを作成し、そのディレクトリ内に「D:¥xampp¥perl¥」ディレクトリ内のファイルやディレクトリを丸ごとコピーしました。

p4-1

これで完了です。

確認

では次のような簡単なスクリプトを用意します。

#!/user/bin/perl

print "Content-type: text/plain¥n¥n";
print "Hello !¥n";

「linktest.cgi」と言う名前でApacheのドキュメントルート以下に配置しました。その後でブラウザから「http://localhost/linktest.cgi」に対してアクセスしてみます。

p4-2

このように問題無くスクリプトが動作しました。

シンボリックリンクを設定する方法もあるようですが、WindowsXPでは標準で機能がありませんでしたので今回は試していません。

( Written by T.buzz.Ikura+ )

Social Button
Facebook Page