AN HTTPD ゲストブック/コメント集(2005年10月12日14:10)


中田昭雄 nakata@st.rim.or.jp 2005/10/21 21:13

ナクさん、
Apache でも AN HTTPD でも他の HTTPサーバでも同じだと思います。
AN HTTPD の場合、NT系のWindowsでは NPHスクリプトで「CGI出力を検査」が意図した通りに動作しないというデメリットがあるだけだと思います。
それでも NPHに対応しているのは、NPHのテスト用という用途があるからです。


ナク ナク 2005/10/20 22:58

>いとさま、中田さま

ご回答いただきましてありがとうございました。
Apacheでは必要ないということは知っていたのですが、
ANHTTPDではどうなのでしょうか・・・?

NPH化で効果があるならば継続していきたいと考えています。


中田昭雄 nakata@st.rim.or.jp 2005/10/16 20:21

ナクさん、
WindowsNT/2000/XP の場合のNPHスクリプトでは、そうなってしまいます。
標準エラー出力の扱いが NT系 と 98系(95/98/Me) とで違うのがその理由です。

いとさんの言うとおりNPHを使う意味はあまりないと思いますが、使うのであれば、デバッグ終了後NPHにするというのがよいと思います。


いと gfh05223@nifty.com 2005/10/16 18:20

ナクさん

NPHについては例えば以下のページなどが参考になります。
http://www2u.biglobe.ne.jp/~fsasaki/WikiFan/wiki.cgi?CGI%2fNPH%a5%b9%a5%af%a5%ea%a5%d7%a5%c8

現象としては、NPHスクリプトで発生した Perlのエラーが
標準エラー出力(STDERR)にバッファリングされ、
Namazuに限らず次に実行された通常のCGIスクリプトの
STDOUT/STDERRと一緒に表示されているようです。

NPHでは Webサーバはヘッダを一切変更しないので、
500エラーを返すならそれは NPHスクリプトの役目かと。
自分でエラー処理までするくらいなら、エラーしない
までに十分 CGIをデバッグしておくことでしょうね。

自前のヘッダでよほど特殊なことをするのでなければ、
NPHを使う理由は今時何もないと上記のページを読んで
私はそう理解しました(Apacheについての説明でしたが)。


ナク ナク 2005/10/16 16:54

どうやらNPHスクリプトの場合に発生するようです。
普通のCGIで実験してみましたところ、IEのメッセージ以外が表示されました。
「NPHスクリプトではサーバから接続を切る」はチェックされています。

念のため追記させていただきます。


ナク ナク 2005/10/16 02:41

>中田様

お返事いただきましてありがとうございます。
分かりづらい表現で申し訳ありませんでした。

CGIのエラーメッセージというものですが、
Windows98の時は、とあるCGIの12行目に全角文字の「あ」をただ入力しただけにして実行すると、

===========================

Unrecognized character \xA4 at C:\test\nph-test.cgi li ne 12. Unrecognized character \xA4 at C:\test\nph-test.cgi li ne 12.

===========================

というようなエラーメッセージが実行結果といいますか、
IE固有のメッセージではないものがブラウザにそのまま表示されていました。

そして、Windows2000にて同じような手順を行いますと、
ブラウザには「取り消されたアクション」としてIE固有のエラー画面が表示されるだけで、
上記メッセージは表示されません。
しかし、この状態でnamazuの検索を実行しますと、namazuの検索結果画面に

============================

検索式にマッチする文書はありませんでした

--------------------------------------

現在、 1,128 の文書がインデックス化され、 13,695 個のキーワードが登録されています。
インデックスの最終更新日: 2004-09-19

Unrecognized character \xA4 at C:\test\nph-test.cgi li ne 12. Unrecognized character \xA4 at C:\test\nph-test.cgi li ne 12.

============================

というメッセージが表示されてしまいます。

IEの簡易表示のチェックははずしており、HTTPDのCGI出力を検査はチェックしています。
Windows98の時はCGIの構文エラーが表示されていたのですが、
2000では表示されなくなってしまいました。


中田昭雄 nakata@st.rim.or.jp 2005/10/15 19:51

ナクさん、
ちょっと質問の意味がよくわからないのですが、
http://homepage1.nifty.com/yito/anhttpd/ie-message.html
なども参考にしてください。
これとは質問の意味が違うようでしたら、「namazuの検索結果にCGIのエラーメッセージが出力され」るという、そのエラーメッセージの内容をお知らせください。


ナク a@bbb.ccc 2005/10/12 14:10

いつも愛用させていただいておりますが、
1点、IEに表示されるCGIのエラーメッセージについて質問させてください。

Windows2000とANHTTPDを使わせていただいているのですが、
例えば、全角スペースなどを入力して意図的にエラーが出るようにしているのですが、
IEの簡易エラーのチェックを外し、HTTPDのCGI出力を検査をチェックしても、
「ページを表示できません」というIE用の画面が表示されてしまいます。

このエラーメッセージが表示されない状態で、
namazuの検索を実行しますと、namazuの検索結果にCGIのエラーメッセージが出力されてしまいます。
このエラーメッセージは累計されていくようでして、
5回エラーを出せば、同じエラーメッセージが5つ表示されます。

namazuに出てしまうとファイルのパスやエラー内容が外部に漏れしまうのですが、
namazuの検索結果ではなく、ブラウザに表示させるにはどうしたら宜しいのでしょうか。
Window98とANHTTPDではIEのエラーメッセージではないものが表示されております。