えらく古い発言へのレスになります。
ずっと気になっていたのですが、検索した範囲では、その後解決したという話もないよう
なのでコメントさせていただきます。
直接には、http://homepage1.nifty.com/yito/namazu/gbook/20030815.1940.htmlに収録
されている2003/08/16 10:40の いと さんの発言へのレスになります。
》WinMeだからなのかどうか?
》OSがMeな人に追試に協力してもらえると再現性のある現象なのかどうか
》何か分るかもしれないのですが。
WinMeのノートパソコンが手元にきたので、実験してみました。
ものはシャープのメビウス、クロック600MHzのマシンです。
AnHttpdのバージョンは1.42nを使っています。
省電力設定で、HDDは止めるように設定してあって、かつ、HDDが止まってからCGIに
アクセスしても、特に問題なく応答が返ってきます。CGI以外のHTMLファイルやGIF
ファイルでもOKです。
省電力設定でディスプレイを止めるように設定し、ディスプレイが止まっているときに
ブラウザからサーバにアクセスすると
・CGI以外のHTMLファイルやGIFファイルは正常に応答が返ってきます。
・CGIの場合、応答が返ってこないので、ブラウザによって無限に待ってしまったり、
あるいはタイムアウトとなります。
上記でブラウザがCGIにアクセス中のときにアクセスを中断させて、それからサーバマシン
に触ってディスプレイを表示させます。このとき、何回か試した範囲では、画面には
エラーメッセージが表示されていないことが多いです。
AnHTTPDのオプションの表示/インデックス→動作表示が「トレイ上」になっているとき
には、一度もエラーメッセージが表示されませんでした。
確か「ウィンドウ」になっていたときだったと思いましたが、1度だけ、怪しげな
メッセージが表示されたことがありました。内容は、2003/02/02 19:48のti-ken
さんの書き込みと同じようなもので、ただ、アドレスが0000:C022だったかな、うろ覚え
で申し訳ないのですが、上位側が「0」4つだったことは覚えています。
一度でもディスプレイが消えている間にCGIにアクセスがあると、ディスプレイの表示が
戻った後にCGIにアクセスしても、すべて
「標準出力一時ファイル 1.x を stdout.x にリネームできません。」
になってしまいます。ただし、この状態になっても、CGI以外のファイルは正常に応答が
返ってきます。また、CTRL+ALT+DELでタスクの一覧を表示させても、ほとんどの場合で
winoldapが1つも表示されませんでした。
ということで、WinMe限定の話かもしれませんが、省電力設定でディスプレイの表示を消す
のは致命的なようです。
なお、省電力設定ではなく、スクリーンセーバーで模様なしのスクリーンセーバーを設定
しておけば、省電力と同じような感じに画面を暗くすることができて、かつ、AnHTTPDが
落ちずにすむようです。
中田さん、
わかりました。
これからはディスプレイをオフにしないように設定しておきます。
いろいろありがとうございました。
あっきぃさん、
そうなるとちょっとわかりません。あとは私の方で調べてみます。
とりあえず、WindowsMe ではディスプレイをオフにしないようにして使ってもらうしかなさそうですね。
中田さん、
httpd.logは、になっていました。(IPは*で隠しています)
***.***.***.*** - - [17/Aug/2003:21:57:40 +0900] "GET /cgi-bin/test.cgi HTTP/1.1" 500 115
errors.logは、
Sun Aug 17 21:57:40 2003 Can't create file for stdin in spawnProcess.
Sun Aug 17 21:57:40 2003 Error Response 500 Thread 0(ID= -16343893) to ***.***.***.*** for "/cgi-bin/test.cgi"
あっきぃさん、
最初に言ったのと逆になってしまいますが、「CGI出力を検査」のチェックを外していた場合の test.cgi へのアクセスでも同じですか?
その時の errors.log の中身を知らせてください。
中田さん、
ディスプレイがオフになっている間も、
CGIエラーが出るようになってからも、HTMLは表示できます。
あっきぃさん、
ディスプレイがオフの時、CGIではなく普通のHTMLは正常に表示されるのでしょうか?
あっきぃさん、
》32ビット版というのはperlのことでしょうか?
お使いになっているアプリ(たぶんexeファイル)のことです。
ところで、cgiにはperlをお使いですか?
そんなこと書いてありましたっけ?
cgiっていうのはperlに限りません。
私の場合、cgiにawkを使ったり、バッチなcgiの中でsortやuniqを使ったりしていました。
なので、たとえばhello.cgiとかからはじめてステップバイステップで調査していくのがよろしいかと。
中田さん、
今のところ、「開いています」になったままで、
エラーの表示も出ません。
あっきぃさん、
「簡単なCGIでどうなるか」というのはCGIの問題かどうかを確かめるために聞いたわけではありません。
CGI自体に問題がないことはわかっています。
さて、その errors.log の時に
>標準出力一時ファイル 1.x を stdout.x にリネームできません。
というエラーになりましたか?
色々とレスし忘れが…(^^;
>中田さん
簡単なCGIでもなります。(hello.cgiではありませんが)
CGIスクリプトには問題はないと思います。
>としきさん
32ビット版というのはperlのことでしょうか?
中田さん、
errors.loghttpd.logにはログが残っていませんでした。
---------------
Sat Aug 16 19:42:15 2003 Client Abort?- (1) detected during CGI/SSI process
Sat Aug 16 19:42:15 2003 KillProcess: Got Process ID = -16514545, dwExitCode = 0
Sat Aug 16 19:42:15 2003 Client Abort 2 (or SOCKET_ERROR) detected during CGI/SSI process
Sat Aug 16 19:42:15 2003 KillProcess: Killing Process ID -16514545...
Sat Aug 16 19:42:15 2003 KillProcess: thread 0 terminating process PERL.EXE, fullPath=C:\PERL\BIN\PERL.EXE (hProcess = 84, pid=ff04020f)
Sat Aug 16 19:42:15 2003 KillProcess: Process Killed
Sat Aug 16 19:42:16 2003 Error Response 500 Thread 0(ID= -16364569) to p4205-ipad01sapodoori.hokkaido.ocn.ne.jp for "/cgi-bin/test.cgi"
Sat Aug 16 19:42:16 2003 Error: Can't send error response header (500) for Thread 0 (ID = -16364569) with errorcode 10054 for socket 104
あっきぃさん、
簡単なCGIでも同じですか?
簡単なCGIというのはたとえば
http://homepage1.nifty.com/yito/anhttpd/install.html
の hello.cgi のようなもののことです。
同じエラーになるようなら、その時のhttpd.log と errors.log の内容はどうなっていますか?
「Winoldap」っていうのはCGIのなかで16ビットのアプリを使うとでた記憶があります。
普通にコマンドプロンプトからデバッグのために16ビットアプリを使っても全然
でてこないのに、CGIで古いperlだのawkだのsortだのuniqを使うとでてしまって、
解決に難渋した記憶があります。
新しい32ビット版のアプリに変えたら解決しました。
パスの設定の関係とかで、意図せずに古いツールを使っている可能性がありますので、
そのへんをチェックされてみるとよろしいかと。
いとさん、
参考URLありがとうございます。
キーワードに「ディスプレイ」関連の文字を入れ忘れてたから
この過去ログは見つけられなかったのかな…。(^^;
過去ログの内容と症状は同じだと思います。
あと、昨日わかったことなのですが、ディスプレイが切れているときにアクセスがあると、
Windowsのエラー音(?ダイアログが出るときになる音です)がなったのですが
Windowsを復帰させても、ダイアログや警告などは出ていませんでした。
それと、エラーが出るようになってから、強制終了画面を出すと、
「Winoldap」というのがたくさん(CGIを実行させようとしている分かな…)
たまっていました。
あっきぃ さんに関係ありそうな過去ログです。
http://homepage1.nifty.com/yito/namazu/gbook/20030202.1554.html
http://homepage1.nifty.com/yito/namazu/gbook/20010822.2235.html
http://homepage1.nifty.com/yito/namazu/gbook/20010806.0809.html
WinMeだからなのかどうか?
OSがMeな人に追試に協力してもらえると再現性のある現象なのかどうか
何か分るかもしれないのですが。
中田さん、
Ver1.42iにアップデートして、今もディスプレイがオフになるまで
起動しっぱなしにしてますが、今のところはCGIが実行できないエラーはないです。
ディスプレイがオフ中にアクセスされるとだめなのかも…。
それで、CGIが動かなかった時の500エラーの内容ですが、
標準出力一時ファイル 1.x を stdout.x にリネームできません。
でした。
あっきぃさん、
「500エラー」というだけではどうしようもありません。
せめて「CGI出力を検査」にチェックを入れてください。
はじめまして。いつもAnhttpdを使わせていただいてます。
CGIの実行に関してなのですが、起動直後には正常に動いたCGIが
しばらくすると、500エラーになってしまいます。
過去ログで探した文章では、スクリプトを書き間違えているという
結果のようなものばかりですが、起動後からエラーが出るまでに
スクリプトは全く書き換えていません。
僕的には、エラーが出るタイミングが、
ディスプレイの電源が切れるときのように思います。
(コントロールパネル→電源の管理で設定できるやつです)
OSはWinMe、AnHttpdは1.42hです。
これから1.42iにバージョンアップして、色々試してみます。
それでは