Syber さん、いとさん
ありがとう御座います。.shtmlに拡張子を変更したら、無事動作するようになりました。
これで勉強を続けることができます。
ありがとう御座いました。
Syberさん、早速のresありがとう御座います。
でもやはり動作しません。
ロックを0に変えてみてもだめでした。
「あなたは 人目の訪問者です。」としか表示されません。
OSはWin2000を使用していますが、AnHTTPDの設定にミスがあるのでしょうか?
現状ではデフォルトのまま使用しています。
掲示板などのCGIは正常動作するのですが・・・。
何か他に注意する点がありましたら、御教授お願い致します。
加藤さん
AN HTTPDのオプション設定がデフォルトのままということでしたら、ファイル名を
counter.html でなく、counter.shtml に変更して試してみてください。
AN HTTPDではセキュリティ上、デフォルトではドキュメントルート下のindex.htmlと、
*.shtmlという名前のファイルでしかSSIを実行できなくなっています。
もし、*.html でもSSIを実行したいということなら、オプション/一般タブの *.html
にもチェックを付けてください。
Syberさんが言われるように、プログラムの問題ではなさそうに思えます。
加藤 さん
ソースを実行テストしましたが、ちゃんと動作いたします。
ロックを使っているので、Windows95/98/Me の場合、flock は
使用できません。
ソースを見ると、ロックをON/OFFできる処理みたいなので、
$uselock = 1; を $uselock = 0; に変えたら、 flock はOFF
になり、実行されない処理になっているようなので。
加藤です。
度々お騒がせいたします。
アクセスカウンタのプログラムなのですが、SSIが上手く動作しません。
下がそのプログラムです。
(counter.html)
<HTML>
<BODY>
あなたは、<!--#exec cmd="./counter.pl counter"-->人目の訪問者です。
</BODY>
</HTML>
(counter.pl)
#!/usr/local/bin/perl
$dir = '.';
$extension = 'cnt';
$uselock = 1;
if ($#ARGV < 0) {
print "Usage: counter.pl countername\n";
exit(0);
}
$countername = $ARGV[0];
$datafile = "$dir/$countername.$extension";
if (!open(OUT, "+<$datafile")) {
print "???";
exit(0);
}
if (!&lock_file(OUT)) {
print "busy";
exit(0);
}
seek(OUT, 0, 0);
$count = 1 + <OUT>;
seek(OUT, 0, 0);
print OUT "$count\n";
&unlock_file(OUT);
close(OUT);
print "$count\n";
exit(0);
sub lock_file {
local(*FILE) = @_;
if ($uselock) {
eval("flock(FILE, 2)"); # 2=LOCK_EX
if ($@) {
return 0;
}
}
return 1;
}
sub unlock_file {
local(*FILE) = @_;
if ($uselock) {
eval("flock(FILE, 8)"); # 8=LOCK_UN
}
}
同じフォルダに置いて、counter.htmを実行しても、カウンタ数が表示されません。
カウンタファイルの中には0が入っています。
このサンプルが載っていた本には、「カウンタ数が表示されないのはSSIが上手く動作
していない」と書かれていたので、詰まってしまいました。
プログラムがおかしいのでしょうか?
毎度申し訳ありませんが、御教授お願い致します。