thawk さん、
おそらく ISAPI(PerlIS.DLL)の問題だろうと思います。
対策は、2通りあって、まずは、
(1)オプション/一般の一番下の「.pl, .cgi の実行ISAPI」の前のチェックをはずす。
というのが一番簡単です。
PerlIS.DLL だと引数を渡せないので、perl.exe を使うようにすればよい、ということです。
どうしても ISAPIでやりたいのであれば、
(2)counter.pl に手を入れる。
という方法がとれます。
どう手を入れるかは、AN HTTPD の解凍先にある isapi フォルダ中の count.pl の中の、
if ($ENV{'PERLXS'}) {
$file = Win32::GetCwd()."\\".$ENV{'QUERY_STRING'};
} else {
$file = $ARGV[0];
}
というのを参考にしてください。
ISAPI(PerlIS.DLL)を使う場合、環境変数 PERLXS がセットされます。
PerlIS.DLL では $ARGV[0] が使えないので、引数は環境変数 QUERY_STRING に入るようにしています。
はじめまして、thawkと申します。
ローカルでCGIだけでなくwebページそのもののテストとしても、
利用させてもらってます。
過去のログ(?)をみまして、3月中旬くらいに書き込まれた内容が、
私の聞きたい事にとても関係が有る様に思えたのですが、意味を理解できなかったので、
似た内容の質問になってしまうかもしれませんが、やさしく教えてください。
CGIの勉強としてカウンタを作っているのですが、
CGIを実行するHTMLには
<!--#exec cmd="./counter.pl counter"-->
と言うSSIの記述を用い、counter.plファイルの中に
$#ARGVがゼロより小さければ終了とプログラムを書くと、カウンタは更新されず
終了してしまいます。
いろいろ調べた結果、MS-DOSプロンプトから
D:\AN-HTTPD\KPS>d:\usr\local\bin\perl ./counter.pl counter
"D:\AN-HTTPD\KPS"は私のホームディレクトリです。
"d:\usr\local\bin\perl"はActivePerlのインストールディレクトリです。
で実行したところ、正常に動作しています
最後の指定の"counter"はテキストでカウント数を記憶しているファイル
counter.cntを指定する際の、ファイル名指定で使用するものなので、
*.pl中に直接ファイル名を書けば済む問題なのですが、なんだか気持ち悪いです。
結局SSIがPerl.exeに実行するファイルの後のオプション"counter"を与えてないのだと
思うのですが、これはhttpdの問題ですか?
SSIの許可や*.htmlでもSSIの許可等、設定に問題はないと思うのですが・・・