中田さん
有り難うございました。
原因は環境変数TMPの記述ミスでした (c::\tempなんて書いてました^^; )
いろいろとお騒がせして申し訳御座いませんでした。
サポート大変ありがたかったです。
かずさん、
Perlのパスではなくて一時ファイル(.\stdin.0 や .\1.0)が存在していなかったのですね。
典型的には、環境変数 TMP に指定されたフォルダが存在しない場合にそうなってしまいます。
TMP のデフォルトは %USERPROFILE%\Local Settings\Temp です(Local Settings は隠し属性がついています)。
デフォルトの場合は、Temp が存在して書込み可になっていることを確認してください。
もし、TMPをデフォルトから変更している場合は、その指定したフォルダの存在と属性を確認してください。
1.36bまでで大丈夫なのは、1.37 から Windows2000/XP でも一時ファイルの置き場所に環境変数 TMP を使うことにしたためです。
それまではWindows2000/XPではドキュメントルートを使っていました。
1.37 から変えたのは、CD-R,CD-ROM などリードオンリーデバイス上で動作させたいという要望に応えたためです。
TMP の設定が正しければいいはずなので、プログラムの方はそのままにしておきたいと考えています。
もっとも TMP のパスが存在しない場合はドキュメントルートを使うようして、さらにドキュメントルートが書込みできない場合は、書込み可能なディスクを探すようにしておこうとは思いますが。
いとさん
有り難うございます。ダウンロードして試させていただきました。
中田さん
いとさんからいただいたファイルでテストしました。
1.36bまでは大丈夫でしたが、1.37dd以降は駄目でした。
process.logは以下の通り。
二通りのパターンがあります。上の方が頻度は遙かに高いです。
Sun Feb 03 04:40:26 2002 C:\WINNT\system32\cmd.exe /C C:\Perl\bin\Perl.exe d:\HOME\count\count.cgi < ".\stdin.0" > ".\1.0"perlの設定は
Sun Feb 03 04:35:41 2002 C:\WINNT\system32\cmd.exe /C C:\Perl\bin\Perl.exe d:\HOME\ez\bbs\bbs.cgi < ".\stdin.1" > ".\1.1"
かずさん、
書いてからバージョンアップしたわけではなさそうだなと思いました。
それでは、半角空白がらみでしょうか。。。
.pl,.cgi の実行ファイルをどう設定しているかをお知らせ下さい。
また、process.log にチェックを入れてから実行し process.log の中身もお知らせ下さい。
かずさん
臨時に自宅サーバを立ち上げて AN HTTPD の手持ちの旧バージョンを置きました。
http://anhttpd.zive.net/
ftp://anhttpd.zive.net/
必要でしたらダウンロードして試してみてください。
ダウンロードが終ればサーバは停止します。
http と ftp を用意したのは念のためで中身は同じです。
関係ないかもしれませんが、以下も参考までに。
http://homepage2.nifty.com/winfaq/w2k/apps.html#1045
さらに追加。
もし古いバージョンのアーカイブがどこかで手に入るようでしたら、全バージョンを順に追ってどのバージョンがOKとNGの境なのか調べさせていただきますが、どこかにありませんでしょうか。
補足です。
私のテストした流れです。
この間、レジストリや設定は一切いじっていません。ファイルの差し替えのみです。
[1] 1.38b 導入・環境設定 NG
↓
[2] 1.28 にファイルだけ差し替え OK
↓
[3] 1.37dd にファイルだけ差し替え NG
↓
[4] 1.38b にファイルだけ差し替え やっぱりNG
↓
[5] 1.28 にファイルだけ差し替え OK
一度中田さんからご指摘いただいたレジストリ変更して初期状態からの再設定も
行っていますが、症状は全く変わらずです。
以上、宜しくお願いいたします。
中田さん
1.28から1.38bにバージョンアップしたわけではありません。
OSのクリーンインストールを行って、1.38dを新規に導入しました。
AN httpd内でのPerlのパスは合っています。
今回のトラブルがあったので持っていた古いアーカイブを解凍して、初めて1.28を使用しましたところうまくいったというわけです。(OS入れ替え前は1.28を使用してました)
何かの参考になりましたら幸いです。
かずさん、
「指定されたパスが見つかりません」というのは perl.exe のパスがみつからないというエラーでしょう。
スクリプトの中身の実行までいっていませんから、require云々は関係ありません。
1.28 からの設定の引継ぎに問題があるのかもしれませんので調べてみます。
レジストリキー HKEY_LOCAL_MACHINE\Software\AnHttpd\default の default を別の名前(たとえばdefault.128)にしてから 1.38b を起動し、設定をやり直せば大丈夫でしょう。
だめなら 新たにできた default を消して default.128 を default に名前を変えれば元に戻ります。
はじめまして。かずと言います。
AN httpdは1.38bでOSはWindows2000、ActivePerlを使用しています。
過去ログにも何度も出てきているようですが、私の環境でも同様の障害が起きています。
全てのCGIで以下のエラーが出て実行出来ません。
-----------------
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
指定されたパスが見つかりません
-----------------
CGIスクリプト内のファイルの指定部で引っかかっている感じがします。
例えば
require './jcode.pl';
等のファイルパスが引けていないようです。
報告してる割にあやふやな書き方なのは、AN httpdを1.28に戻したからです。
たまたま古い1.28を持っていたのでAN httpdだけを差し替えたら不思議とそれまで動かなかったCGIも問題なく動きました。
OSやPerl、AN httpd自体の設定は何も変えませんでしたので、AN httpd最新版の何かに問題があるのではないかと報告させていただきました。
1.38bおよび1.28での検証しかしていませんので、その他のバージョンに関しては分かりません。