>そのためやむをえず、IE5の時には 500エラーの場合、エラーメッセージはそのままにして >ステータスだけ 500 を 200 に変えて返すようにしました。 これは 1.19b からです。
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main] キーの
"Friendly http errors" の値が "no" のときは IE5 でも500を返すようにできないでしょうか?
値が "yes" になっているマシンの IE5 からアクセスするとやはり見えなくなりますけどすくなくとも1台のマシン上で値を "no" にできた人ならエラーメッセージが表示できないと騒ぐこともないでしょうし CGI のデバッグでメッセージを表示させることが目的ならインターネット経由で不特定のマシンからエラーがどのように見えるかはあまり問題ではないでしょうし。
それはそれとして、キャッシュされないように応答に Pragma: no-cache を含めたほうがいいと思います。
中田さん、お返事ありがとうございました。
>たぶん「サーバが見つからないか、またはDNSエラーです」という..
そうですそうです。で、中田さんのアドバイスどおりにやってみました。
まず、「CGI出力を検査」にチェックを入れました(AN HTTPDは1.19eです)。
次に、http://127.0.0.1/cgi/cgisample.html にアクセスし、
一番の上の「単純なテスト」を押すと、今度は「DNSエラー」とはならずに、
|Error 500
|CGI エラー - Content-Type ヘッダが正しくありません。
|CGI 出力メッセージ:
|
|指定した名前は、内部コマンドまたは外部コマンド、
|操作可能なプログラムまたはバッチ ファイルとして認識されません・p>
というエラーが出ました。一度cgisample.htmlに戻って、その下の「押してください」等でも
全て同じエラーが出ました。他に自作のCGI(unixで動作確認済み)でも同じエラーが出ました。
という感じなのですが、対処法はわかりますでしょうか...。
ともちんさん、
Win98 でヘルパーオフの時には、リソースメータでシステムリソースも見ておいてください。
システムリソースが単調に減少しなければいいのですが。。。
PEKOPON さん、
おそらく IE5 にしてからだと思います。
IE5 では、500エラーを受け取るとIE5独自の(親切な)エラーメッセージにしてしまうようです。
つまり、AN HTTPD が返すメッセージを表示しなくなってしまった、ということです。
そのためやむをえず、IE5の時には 500エラーの場合、エラーメッセージはそのままにして ステータスだけ 500 を 200 に変えて返すようにしました。 これは 1.19b からです。
どうも。
ヘルパーオフで何回か終了させてみたのですが、(3、4回くらいです)
今のところエラーはでてません。
引き続きやってみます。
中田さん
いつ頃かはわからないのですがANHTTPDが同じエラーしか
返さなくなりました、?????
バージョンUPしたら直りましたが、他の書き込みにもあるような
DNSエラーでした、それとCGIにflockが使われていたので(flock
使えないの忘れていました、CGIの作者から指摘がありました)
コメントにしたら動くようになりました
ZnZさん、
ご指摘どうも。Lhasaのリンクは直しました。
他にも不適切なリンクやリンクすべきものなどありましたらお知らせ下さい。
なかにしさん、
たぶん「サーバが見つからないか、またはDNSエラーです。」というメッセージですよね?
予想外の応答を受け取ると IE5 はこの表示をしてしまうようです。
まず、AN HTTPD のバージョンは 1.19b かそれ以降にして、オプション/一般の 「CGI出力を検査」にチェックを入れて再度やってみてください。
CGI(Perl)のエラーメッセージが表示されると思います。その内容をお知らせ下さい。
zaqua さん、
メーラのサーバ指定は、AN HTTPD が同一マシン上で動いているなら 127.0.0.1でいいはずです。
もちろんIPアドレスを固定しているなら、そのマシンのIPアドレスでもいいと思います。
ダイヤルアップ環境などでは「ホスト名=」はダイヤルアップの有無で変わるでしょうから毎回変更することになるので面倒でしょう。
127.0.0.1 にしたとき、メーラのエラーメッセージは何でしょうか?
「解凍には、Winzip または Lhasa などをお使い下さい。」のLhasaからリンクが古いです。
はじめまして。cgiのデバッグ用に使わせて頂こうと思い、
インストールしました。が、cgiが表示できません...。
もちろんperlはインストールしてあり、httpdの「オプション(一般)」で
pathも指定しています。
症状は、
http://127.0.0.1/
とすればちゃんとindex.htmlが表示されます。
http://127.0.0.1/xxx.cgi
とすると、IE5で「DNSエラー」となってしまいます。
OSはNT4(sp5)です。
>中田さんへ・・・
ごめんなさい、ちょっとよくわからないのですが・・・
まず、ゲートウェイのPOPとSMTPはメールサーバで設定しました。ポート番号もOKです。
しかし、メーラでの設定方法がよくわかりません。
「メーラのサーバ指定」というのは、AN HTTPDが動作してるサーバのアドレスですよね?
このアドレスは「192.168.0.1]などでしょうか?それとも「127.0.0.1」でしょうか?
それとも「ホスト名=***」の「***」ですか?
どうもうまく動作してくれません・・・
メーラはOUTLOOK,NETSCAPEメーラともに試して見ました・・・
お手数ですが、もう少し詳しくお願いします。
えむけいさん、
今度はキャッシュにも206ヘッダ情報がはいってしまうようですね。
ETag, Range のくいちがいも含めて、2、3日中に手を入れます。
PEKOPON さん、
500エラーの内容(出ているメッセージの内容すべて)を知らせてもらった方が原因がわかるのも早いと思います。
千秋さん、
そうですね。1.20 にしない理由はかなり恣意的ですが、追加した機能が思ったとおりに機能しないという理由による修正だけの場合はアルファベットをつけています。
1.19 はもう少し続きそうです。
久里葉甘さん、
2バイト文字コードをすべて %NN%NN の形にエンコードすれば大丈夫だと思います。
(NNのところは 各バイトの16進数です)
zaqua さん、
メールサーバは現在のところひとつしか設定できません。
メーラのサーバ指定を AN HTTPD が稼動しているホストにして、ゲートウェイのところに今までメーラで指定していたサーバを指定することになります。
また、(これも現在のところ)ICQのプロクシ(ゲートウェイ)機能はありません。
吉田です。
こんにちは。
中田さんへ
ログの件直っています。いろいろ対応ありがとうございました。
千秋さんへ
ありがとうございます。
Analogは知っています。
ログ解析で検索すると結構引っかかったので。英語ということで、ちょっと・・・
と思っていたのですが、機会を見てトライしてみたいと思います。
一応ダウンロードはしてあります。
あとNT Pressですね。本屋さんで探してみたいと思います。
はじめまして、ANHTTPD 使わせてもらっています。
CGIなんですけど、あるCGIだとちゃんと動いているのですけど
あるCGIを動かしたときに500エラーが出ています。
これはディレクトリの指定等を相対パス、絶対パス等いろいろ変えても
動きません、なにか設定等まちがいがあるのかもしれませんが
気になるようなところがあれば教えてください。
中田さん、精力的な改定に敬意を表します。Windows9x の上でCGIをチェックする
時の強力なツールになっています。
ver 1.19 は、数回の改定が実施されていますが、1.20 に上げない理由が聞きたいです。
(不具合の修正は、版を上げるには至らない、ということですか?)
さて、ログの解析に関して、自作のプログラムを作られては、という呼びかけに関して、
私の現在利用しているログ解析の道具、Analogを紹介します。
UNIX 系のOSでは、比較的有名なものですが、Windows9x/NT で稼動するように
変更したバイナリを以下のURLで公開中です。
ftp://crab.it.osha.sut.ac.jp/pub/Win32/develope/senshu/Analog
CGI として動作させれば、各種のオプションをWebブラウザから指定でき、
かなり有益な情報を得ることが出来ます。
ご利用ください。
簡単な内容ですが、8月に発売される「技術評論社のNTpress #8」に紹介の
記事を書きました。機会があれば、ご覧ください。
えっと、バグなのか何なのか解りませんが、2バイト系の文字を多用した
ロングファイル名のファイルをアンカーでリンクしてるのですが、法則性とかに関係なく
ダウンロードできない場合があります。ソレも結構カナリの量なのですが、対処法とかないでしょうか?。
始めまして。zaquaと言います。
現在1.19eでキャッシュサーバとして使用させていただいており大変感謝しています。
質問が有るのですがクライアントマシン(?)からメールの送受信を行いたいのですが、
方法がわかりません。
プロクシ、ゲートウェイの項目のゲートウェイでSMTPとPOP3を設定するのだとは思いますけど
私には全然わかりません。
もしよろしければ設定方法を教えていただけませんでしょうか?
メールサーバは複数使用予定です。
あと、もう一つ質問です。
ICQをクライアントマシンで使用することは可能でしょうか?
ICQの方を調べてみるとSocks(だったかな?)の設定が必要って書かれていたような
気がしたのですが・・・
当初はCGIの勉強のために導入したのですが、PCが合計3台になってしまったために
ネットワークサーバで遊んでるため、こういう下らない事を考えてしまってます(^^;
解決方法を教えていただけると幸いです。
それでは失礼いたします。
ヘルパーオフの設定でいろいろ試しているところです。
結果報告が遅れるかもしれませんがご容赦ください(_ _)
えむけいさん、
一応 1.19e で直したつもりです。
ただし、Etag, Range がリクエストとキャッシュとで違う場合の処理はまだ問題がありそうです。
えむけいさん、
trace.log だけでなく実際にそのようです。
とりあえず原因はわかったのですが、他の条件との関係も見直しておきたいのでしばらくお待ち下さい。
返事がおくれてすみません。
中田さんへ
Q3サーバの件ですが、Quakeという3Dのゲームサーバです。
Doomというゲームの発展版ですが・・NTではメモリを30Mぐらいくう代物です。
これを立ち上げてからおかしいとか言うのは問題は関係ないようですね・・・
可能性はBlatjにありそうです。
東京はじめさんへ
なにか動きがあればよろしければ教えてください。
私のところはあえてシングルスレッドにはチェックつけずに動かしています。
シングルスレッドが効を期したのであれば一度設定させてもらいます。
では
今度はサーバから206を受け取った後、そのヘッダがブラウザへ返されていないように見えます(trace.logを追う限りでは)。
--------------------------------------------------------
<<< Thu Jul 29 01:03:58 1999 <<<
GET http://www05.u-page.so-net.ne.jp/cf6/keg/CG/runaruna.JPG HTTP/1.0
Accept: */*
Referer: http://www05.u-page.so-net.ne.jp/cf6/keg/runaruna.htm
Accept-Language: ja
Accept-Encoding: gzip, deflate
Range: bytes=32768-
Unless-Modified-Since: Sun, 23 May 1999 11:32:26 GMT
If-Range: "3d126-df81-3747e74a"
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; WindowsNT)
Host: www05.u-page.so-net.ne.jp
Proxy-Connection: Keep-Alive
>>> Thu Jul 29 01:03:58 1999 >>>
GET /cf6/keg/CG/runaruna.JPG HTTP/1.0
Accept: */*
Referer: http://www05.u-page.so-net.ne.jp/cf6/keg/runaruna.htm
Accept-Language: ja
Accept-Encoding: gzip, deflate
Range: bytes=32768-
Unless-Modified-Since: Sun, 23 May 1999 11:32:26 GMT
If-Range: "3d126-df81-3747e74a"
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; WindowsNT) via proxy gateway AnWeb/1.19d
Via: 1.0 PCG-803
Host: www05.u-page.so-net.ne.jp
<<< Thu Jul 29 01:03:59 1999 <<<
HTTP/1.1 206 Partial Content
Date: Wed, 28 Jul 1999 16:03:59 GMT
Server: Apache/1.3.6 (Unix)
Last-Modified: Sun, 23 May 1999 11:32:26 GMT
ETag: "3d126-df81-3747e74a"
Accept-Ranges: bytes
Content-Length: 24449
Content-Range: bytes 32768-57216/57217
Connection: close
Content-Type: image/jpeg
(注)文字化けのためこの部分を削除しました
--------------------------------------------------------
ブラウザの要求にRangeがついていなければ問題ありません(ちゃんと200がヘッダ付きで返されます)。
ナミさん、
「起動中」のあとは「プロセス終了待ち」になるはずなのでちょっと不思議です。
CGI(perl)を起動しようとして起動できていない感じですね。
念のため
(1)オプション−一般の「リモートホストを取得」は「取得しない」
(2)オプション−表示/インデックスの「ホスト名/アドレスを取得」はチェックなし
にしてから、
プロセスログのチェックを入れて、タイムアウトになったあと強制終了して、process.log の内容をお知らせ下さい。
吉田さん、
ログ更新の方は、1.19d で(たぶん)直せたと思います。
ログ解析ソフトは(Perlなどで)作ってフリーで公開していただければ。。
50% の話は、要検討、ですね。
nob-a さん、
ログの中で httpd.log は 標準ログフォーマット と言われるものです。
どこかに解説があると思います。(Apacheのドキュメントなど)
他のログの書式は適当です。特に errors.log は意味不明でしょうから、あまり気にしないでください。
ともちんさん、
すみません、
オプション/一般の 「ヘルパープロセス」のチェックをはずした場合はどうでしょうか?
というつもりでした。
それでOKになれば AN HTTPD のヘルパーまわりの不具合で、変わらなければ おかしい CGI があるということだと思います。
こんにちわ
お久しぶりです
忙しくて昨日やっと家でパソコンを立ちあげて
httpdを実行させてみました
すると
CGI/SSI起動中となってアイコンが雷みたいなマークになり
そうこうしてるうちに
接続127.0.0.1
というふうになりました
しかし結局ページは表示されずに
タイムエラーになってしまい
httpdを終了させようとすると
フリーズしてしまい
強制終了をせざる終えない状況になってしまいます
どうしたらよいでしょうか?
吉田です。
こんにちは。
1.19cを早速インストールしてみました。
ログですが、やっぱり直っていないです。日付が変わっても01,02,とログが作成
されてしまいます。お手数ですが、再度見直しお願いします。
あと、httpのログを解析するソフトご存知ないですか?できればフリーのもの。
あんまりフリーのものってないんですよね。シェアや市販のものは結構ありますが。
最後に、今日httpdがCPU負荷率50%になりました?
100%でなく50%でした。もしかしてデュアルCPUだから?
100%は以前に何度かありましたが(最近は全然ない)、50%というのははじめてで、
なんか不思議な現象でした。とりあえず、サービスを終了/再開させて、現在は
正常な状態ですが・・・。
はじめまして。最近ANHTTPDを導入しました。
サーバについては初心者です。
ログの意味を知りたいのですが、コマンド集の
ようなものは無いのでしょうか?
1999/07/23 21:26のアドバイス通りでした。
書くのも恥ずかしいレベルのミスでした。なんとファイル名に.htmlを
入れていたため読みに行けなかっただけでした。
すみませんでした。
色々なパターンで試してみてます。
また何かありましたらよろしくお願いいたします。
どうも。
ともちんです。
ヘルパーオフとはどういうことでしょうか?
自分が今いち機能を把握してないようでしたらすいません(_ _)
前私が投稿した現象については、
発生するときとしないときがあるんです。
でもAn HTTPdを終了させてから終了すると前述の通り現象はおこりません。
発生するとき発生しない時がある、ということぐらいしか把握できてません(^-^;
えむけいさん、
確かに。 調べてみます。
ともちんさん、
ちょっと確たることは言いかねます。
PerlのCGIで終了しないものがあるとそうなるとは思いますが、バグかもしれません。
そのあたりは 1.17 から 1.19c まで違いはないと思います。
ヘルパーオフでもそうなるかどうかお知らせ下さい。
http://www.clamp-net.com/のトップページが、なぜかキャッシュされません。アクセスした後でキャッシュディレクトリを覗いても.cache_welcomeが作成されていません。
はじめまして。
初級CGIプログラマのともちんと申します。
いつも非常にありがたく使わせていただいてます。感謝です。
バグ?かもしれない現象をご報告いたします(1.17で発生しました。改良されてるのでしょうか)
環境はWindows98で、コンピュータを切る(OSを終了して電源切る)、
つまりスタートボタンからWindowsの終了を選らんで終わろうとすると、
perlからエラーが出て、無視して終了を選ぶとCtrl + Alt + Delキーによる強制終了
コマンドも受け付けない状態になり、完全にハングしてしまいます。
これをキャンセルしてAn Httpdを終了させてからWinを終了させると治るのです。
どうなのでしょうか。
中田さん、ZEROさんこんにちは
東京です。お返事遅れてすみません。取り急ぎシングルスレッドにしてトレースログ
も取ってテスト中です。何か動きがあったらお知らせします。
中田さんへ。
アドバイスをありがとうございます。挨拶が遅れて申し訳ありませんでした。
ZERO さん、
Q3サーバ、というのは知らないのですが、何でしょうか?
無名(1999/07/26 02:29)さん、
HTTPアクセスの継続時間はかなり短いはずで、ユーザ(名)は普通わかりません。そしてそれを"キックする"というのはどういう意味でしょうか?
えむけいさん、
すみません、ミスでした。
ただ、同時に、ETag があっているときに Range: が違う場合の処理もちょっと具合が悪いことも判明してしまったので、対応に1〜2日ください。
東京はじめさんへ
どうもZEROです。sendmail機能を使って出すのは怪しいのかもしれませんねぇ・・
はっきりとはわからないのですが・・・
私のところではsendmail機能を無くし、Q3サーバを立ち上げていると
なる率が高いです。
もちろん1.19bでCPU100%はなりますね・・・
ただ、スレッドが以前と同じように3つ以上になるため、終わっていない可能性がありますね・・
中田さん
私ももう一度logのチェックを入れまして調べてみます。
本当にお手数をおかけしてすみません。
では
中田さん、ご回答ありがとうございます。
早速ご指摘通りにしたら、うまく表示されました。
(パスの指定が間違っていました。。)
アクセス中の任意のユーザをキックできるようにしてほしいです。
お返事ありがとうございました。
ASPの件は了解です。
これからもより良いサーバになるよう頑張って下さい。
AnHTTPDのプロキシが、
If-Range: "3d129-cdd2-375a3333"
というヘッダを付けるべきところで
If-Range: ETag: "3d129-cdd2-375a3333"
と付けてしまうため、ETagが一致しないとみなされて部分取得が無効になってしまっています。
うずみ雲英さん、
ASPは現在使えません。
そのまま使えるのはマイクロソフトのIIS、PWSだけです。
もともとASPはインターネットのオープンスタンダードではなく、マイクロソフト社製のものです。
少し前(gbook.26.htm)にもあるとおり AN HTTPD でも使えるようにしようと思っていますが、かなり手間がかかりそうです。
東京はじめさん、
AN HTTPD は正常動作時も非常に怪しいエラーログを出します。
CPU 100%と関連があるようでしたら、トレースログもオンにしておいて、100%になった時刻をできるだけ限定した上で、その近辺の httpd.log, errors.log, trace.log をメールで送ってください。
trace.log はかなり大きくなるのでメールの方がありがたいです。
もし、blatjやsendmailなど関連する外部コマンドやCGI/SSIなどが特定できる場合は、それをお知らせ下されば私の方で確認してみます。
ZEROさん、
blatj で私の方もやってみます。
こんにちは〜☆
ASPを使いたいんですが、普通にインストールしただけでは使えないんでしょうか?
すいませんが簡単でいいので教えて下さい。
中田さん ZEROさんこんにちは
東京です。御回答ありがとうございました。
さて、シングルスレッドの件ですが、まだテストを始めたばかりで
何ともいえませんが、ZEROさんのsendmailとの相乗りの件につ
いては、現在Sendmail with POP3 が相乗りしています。これも原
因のひとつなのかもしれません。サーバは8月の初めにこの機能を別
のサーバに切り離す予定ですが、その前に1.19bに変更して動かして
みたいと思います。
それから中田様に、Error Logの中に、サーバが100%になってお
かしくなる寸前に非常に怪しいエラーメッセージを残しています。
必要であればアップしますが如何でしょうか?
真っ白の画面になったのですが、見えるようになりました。
すみませんでした。
どうもEXE形式のCGIが動かなくなっていた時に発生していたようです。
どうもありがとうございました!
無事テストできました。
ども、ZEROです書き込みをサボっていました。すみません。
東京はじめさんへ
現在CPUパワーをあげる事によって回避されたと以前書き込みしましたが、
以後実はあげてもあまりかわりが無い事に判明しました。(^^;
P-2 350をつけてもP-3 450でもセレロン 300Aでもそこからの504Mhzでもなります。
私のところでは、1.19B出てからでは問題は起こってないかな?とは思えますが、
テストサーバでBlatjというsendmail機能を使った時にかなりの確率でCPU100%に
なる事が最近分かってきました。
sendmail機能を使うのにはfree分かってるだけで3つのソフトがあるんですが・・・
wsendmailとblatjとsendmail(MS)これだけです。
sendmailが使える機能がそれ以外にありますか?
blatjでなるのであればそれ以外でと考えております。
よろしければ情報を下さい。
ではこれにて
沢渡さん、
オプション/一般の一番下の「.pl, .cgi を PerlIS.dll で実行」のチェックをはずしてください。
kanatan さん、
カウンタは Perlスクリプトですか?
基本的には同じでいいはずですが、ありがちなのは NT で Perl への PATH が通っていない、ということぐらいでしょうか。
「.pl, .cgi の実行プログラム」のところを perl.exe のフルパスで指定してみてください。(たとえば C:\Perl\bin\perl.exe など)
にったさん、
AN HTTPD は、"The requested URL /cgi-bin/test.bat was not found on this server."というエラーは出しません。おそらく Apache か何かでしょう。
したがって、host.domain.co.jp が IPアドレス xxx.xxx.xxx.xxx に対応していない、つまり DNSの設定がおかしい、と思います。
ただそうなると (5) も別のサーバにアクセスしているはずなので、わからない、という話になるわけで、偶然同じ html ファイルがあると考えるしかなくなってしまいます。
DOSプロンプトで、
ping host.domain.co.jp
としたとき、正しい IPアドレスが表示されるでしょうか?
yasu さん、
ちょっとわかりませんが、メモリ(か仮想メモリ、つまりディスクの残容量)が足りないということでしょうか。。。
中山さん、
http://127.0.0.1/ などの / で終わる URLでは、そこにindex.html, index.htm などがなければ、デフォルトでは 403 エラーになります。
インデックスリストを見ることができないためです。
オプションの表示/インデックスの 「.www_browsableがあるディレクトリのみ表示」のチェックをはずしておいた方がよいでしょう。
ユーザ認証関係は エラー401になると思います。
荒畑さん、
1.19bでは PDF も大丈夫のはずなのですが。。。
ブラウザの種類とバージョン、および Acrobat Reader のバージョンを教えてください。
あと、「開けない」というのはどうなるのか(エラーメッセージがでるならどんなメッセージか)をお知らせ下さい。
A-ZONE さん、
確かに Windows95/98 ではそうなってしまいますね。
至急直します。
はじめまして。超初心者の沢渡真と申します。
httpd 1.19バージョンを使ってcgiのテストをしようとしたところ、
ISAPI Error
Internal Error. See "errors.log".
と出て、errors.logには
LoadLibraryEx("C:\Perl\bin\PerlIS.dll") failed with errorcode = 1157
とありました。何度やってもここから進めず、困っています。
どうか、助けて下さい。お願いします。
はじめまして。ANHTTPDを使って、CGIの勉強しています。
1つ質問があるのですが、ANHTTPDは95/98/NT用ですよね?
アクセスカウンタを設置したのですが、95だときちんと表示されるのに
NTだとどうしても表示されません。ANHTTPDの設定方法、cgiの置き場所は
95、NTとも全く同じなのですが。。。原因が全くわかりません。
何かNTの方は特殊な設定とかあるのでしょうか?
すみませんが宜しくお願い致します。
中田さん
お返事遅くなりましてすいません。
>(1)(OK) http://10.0.0.5/readme.html
>(2)(OK) http://10.0.0.5/cgi-bin/test.exe
>(3)(OK) http://xxx.xxx.xxx.xxx/readme.html
>(4)(OK) http://xxx.xxx.xxx.xxx/cgi-bin/test.exe
>(5)(OK) http://host.domain.co.jp/readme.html
>(6)(NG) http://host.domain.co.jp/cgi-bin/test.exe
ということだとすると、ちょっと原因がわかりません。
"Not Found" というのは、本当に エラー404 でしょうか?
上記のとおり間違いありません。
エラーは下記のように表示されます。(CGIは最初から付いているtest.batを利用した場合)
Not Found
The requested URL /cgi-bin/test.bat was not found on this server.
もう一度test.batで試しましたが
http://xxx.xxx.xxx.xxx/cgi-bin/test.bat
は正常に環境変数のリストが表示されました。
http://domain.co.jp/cgi-bin/test.bat
は正常に表示されず、上記のNot Foundのエラーになりました。
htmlはどちらも正常に表示されます。
>なお、「/cgi-binはc:\httpd\cig-binと指定しています。」は \cig-bin ではなくて
>\cgi-bin のタイプミスですよね?
>ここの間違いなら(2)(4)(6)がエラーになりますし。。
失礼しました。タイプミスです。
こんにちは
先ほどの続きですがLOGをみると自分を含めてネットワークの他のPC
からのアクセスの記録は残ってます。
設定をもう少し見てみますがアクセス制御やユーザ認証のチェックは
外れているので不思議なのですが
どこを見れば良いのでしょうか??
そもそも自分のPCからも「このページの表示が認められていません」
と出るのがわからないです(^^;)
はじめまして。
An-httpd、大変助かっています。
ひとつ質問させていただきたいのですが、
Out of memory!というエラーが出力されます。
これは、マシンのメモリが足りない、という意味でしょうか?
本サーバでは、出力されません。
それとも、大きな負荷をかける、無駄なプログラムがあると
いうことでしょうか?
よろしくお願いします。
中田さんコメントありがとうございました。
ブラウザはプロキシを使用しないような設定になっています。
127.0.0.1やIPアドレスを入力すると「このページの表示が認められていません」
と出ます。IEですが(HTTP エラー 403 - アクセス不可)とでます。
ブラウザやAN HTTP Serverの設定の問題なのでしょうか?
やはり....
実は自宅から会社のサーバに電話接続でやってみたところ無事使えました。
もーどうしたらよいかって感じです。
中田さん はじめまして 荒畑と申します。
イントラネットサーバとして使っています。
1.19bを使っていますが、PDFファイルが開けません。
パスに".."(ピリオド二つ)を含む場合はアクセス出来ませんが
三つ以上含むと出来てしまうのですが・・・・・
/........./windows/system/ とか入れたら丸見えでした(TT
上記のようなパスを制限する方法は有るのでしょうか?
中田さん!
問題は解決しました!
ありがとうございました!
中山さん、
「動かない」というのは、どういうエラーになるのでしょうか?
そのエラーメッセージの内容次第ですが、
会社だとブラウザはたぶんプロキシを使うようにしていると思います。
プロキシ経由では 127.0.0.1 は使えませんので、127.0.0.1 はプロキシを使わないように(ブラウザを)設定しなければいけない、ということになります。
東京はじめさん、
いや、CPU100%の問題はCPUパワーの問題ではないと思います。(まだ完全には判明していませんが)
特定のSSIだけで起きるのであれば、オプション/一般の「単一スレッド」にチェックを入れてみていただけますか?
林さん、
そうですね。もし出やすいようなら、オプション/一般の「単一スレッド」にチェックを入れてみてください。
Can't create file for stdin のエラーが出たら Windowsを再起動しないと復帰は難しいです。
なお、1.19b だと IE5 でもエラーメッセージが表示されるはずです。
YASさん、
まずは、オプション/一般の「#!の行を調べる」のチェックをはずしてください。
もし「EXE形式の.cgiを実行する」もチェックしていたらそれもはずしてください。
会社のネットワーク上で使おうと思ってますが
http://127.0.0.1/でやっても自分のIPアドレスでも動きません。
会社のPCだとやはりネットワークの管理が厳しくてサーバを
立てられないんでしょうか。
すみません初歩的な質問で...
どうやったらいいのか誰か教えてください。
Q&A等はみてるのですがわかりません
よろしくお願いいたします。
はじめまして、東京はじめと申します。
An-httpd、初期の頃から重宝させていただいております。
今回初めて書きこませていただきました。
過去の書きこみでZEROさんの投稿の中にSSI使用中にCPU使用率が
100%になる件がありましたが、CPUのパワーを上げる事でいつも落ちる
期間を超えたという記述以降書きこみがありませんが、これはやはりCPU
パワーを上げるという方法で対処するのが正解なのでしょうか?
現在1.19を使用中ですが、私のサーバもSSIを使いはじめてから、ちょう
ど2日位を経過したところで同じ状況となり、リブートすると回復します。
現在CPUはP54C-100という貧弱なCPUを使っているのですが、このSSI
以外は至って快調です。CPUパワーを上げる以外にこの問題を解決する良い
方法はないものでしょうか?同じ問題を解決されている方がいらっしゃいまし
たら是非御教え下さい。
今マシンがハングアップしてしまったので電源を落として、また電源を入れなおしてやってみたところ今度は正常に動作しました、もしかしたらまた動かなくなるかもしれませんがとりあえず解決しましたという事で…。
バージョン1.19を使わせてもらっているんですが。昨日まで問題なく動いていたCGIが今日いきなり動かなくなってしまったんです。500内部サーバエラーとか出て…。でログをとってみたら
Thu Jul 22 12:40:58 1999 Can't create file for stdin in spawnProcess().
Thu Jul 22 12:40:59 1999 Error Response 500 Thread 0(ID= -625151) for "/~yuta-h/chat/chat.cgi"
Thu Jul 22 12:40:59 1999 Can't Create Message File
とかいてあるんですけど…。昨日から設定など何も変えてないはずなんですけど…。
始めまして!早速質問なんですがCGIを立ち上げようとすると以下のエラーが出ます
Error 500
CGI エラー - 以下のコマンドラインを実行できません : "\usr\bin\perl C:\www\djyas\public_html\hello.cgi ", errorcode = 2, No such file or directory
このエラーの対処法を教えてください!お願いします!
吉田さん、
すみません、更新したのに未更新とみなしてしまっているようですね。再度手をいれます。
なお、つける日付は、ログファイルの最終変更日時ではなく作成日時になっています。
また、アクセス毎に更新チェックをしています。作成するのは 99 までで、それ以上は作りません(更新をしません)。
にったさん、
今までの話から、
設定したIPアドレスが xxx.xxx.xxx.xxx, ホスト名(+ドメイン名)が host.domain.co.jp だとして、
(1)(OK) http://10.0.0.5/readme.html
(2)(OK) http://10.0.0.5/cgi-bin/test.exe
(3)(OK) http://xxx.xxx.xxx.xxx/readme.html
(4)(OK) http://xxx.xxx.xxx.xxx/cgi-bin/test.exe
(5)(OK) http://host.domain.co.jp/readme.html
(6)(NG) http://host.domain.co.jp/cgi-bin/test.exe
ということだとすると、ちょっと原因がわかりません。
"Not Found" というのは、本当に エラー404 でしょうか?
なお、「/cgi-binはc:\httpd\cig-binと指定しています。」は \cig-bin ではなくて \cgi-bin のタイプミスですよね? ここの間違いなら(2)(4)(6)がエラーになりますし。。
Toh さん、
CGIのための実践入門Perl追補版のページを参照してください。CD-ROMにあるサンプルや cgi-lib.pl の(結構致命的な)ミスの修正の記述があります。
吉田です。
中田さんこんにちは。
ログの件対策ありがとうございました。しかし・・・(-_-;)
結果はNGでした。
とりあえず先日(7/20)にインストールしたんですが、
1日目はOKでした。
すべてのログが
ログ名称19990720.log
で作成されました。
が2日目(7月21日)から
httpとcacheのみログファイルに書きこみに行くたび(?)バックアップファイルを作るようです。
httpd19990720.01.log
httpd19990720.02.log
と中身が1行もしくは2行程度のファイルがどんどん作成されています。ファイル名が7月20日
になっているのが気になります。
httpdに関しては43個、cacheに関しては30個でファイルの更新は止まっています。
それ以外のログに関しては上記のようなファイルは作成されていません。
とりあえず、もう一日このまま様子を見てみたいと思います。
中田さん
現状ではバーチャルは使用しておりません。
テストでcgisample.htmlをドキュメントルートにコピーして実行しますと
htmlは正常に表示されますが、肝心のCGIはNotFoundになって実行されません。
/cgi-binはc:\httpd\cig-binと指定しています。
HTMLでは<FORM ACTION="/cgi-bin/test.exe">と書いてあります。
IPアドレスを直接指定するとOKですが、ドメイン名を指定してやるとNGです。
なぜでしょうか?
どなたか「CGIのための実践入門Perl」で勉強している方はおりませんか?
どうもSAMPLEを動かすことかできません。(基本もわかっていないんですが・・・。)
「ページに表示されません」とでてしまいます。教えてください。
えむけいさん、
FTPプロクシの補完とトレースは実現するよう考えます。
FTPの方こそ補完があった方がいいですね。トレースはやりとりも含めて全部になると思います。
最後の / の扱いは、現在はサーバにディレクトリかどうか判断させているので、キャッシュオンリーの時はキャッシュの内容で判断するようにしましょう。
FTPプロキシで、たとえば「ftp://ftp.coop.org.tohoku.ac.jp/pub/Mozilla/」が存在していてすでにアクセスしていた(キャッシュの中にディレクトリができていた)ときに「ftp://ftp.coop.org.tohoku.ac.jp/pub/Mozilla」(最後の/なし)にアクセスすると、たとえCacheOnlyでもサーバへアクセスに行こうとしてしまいます。
FTPプロキシを通したとき、FTPサーバとのやりとりはともかくブラウザへ返しているはずの応答までtrace.logに表示されないのですが、表示するようにできないでしょうか?
キャッシュの自動補完超ナイスです。巨大なファイルをダウンロードするとき途中で失敗しても、もう一度クリックするだけでそこから再開できるのでとても楽になりました。
FTPプロクシでもRangeヘッダをRESTコマンドに変換することでレジュームとかキャッシュの補完に対応できないでしょうか?
山中さん、
エクスプローラ(インターネットエクスプローラではなくてただのエクスプローラ)で、表示/フォルダオプションを開き、ファイルタイプのタブを選びます。
登録されているファイルタイプの中に「MS-DOSバッチファイル」というのがあるので、それを選んで編集ボタンを押します。
「内容の種類(MIME)」というところがたぶん空白なので、そこに text/plain と入れる、ということです。
にったさん、
そうするとバーチャルホストを使っているのでしょうか。。。?
各バーチャルホストのエイリアス(特に /cgi-bin など)の設定の問題のような気もします。
すいません 教えて下さい。
http://localhost/cgi/cgisample.html にあるCGIのサンプル
を実行すると test.bat というファイルが生成されますよね。
そうすると、必ずファイルのダウンロードっていうダイアログが
でてしまいます。
>(注意)以下のテストで、ファイルのダウンロードになってしまう場合は、
>エクスプローラのファイルタイプの設定で、MS-DOSバッチファイルの
>MIMEタイプを text/plain にしてください。
という注意書きのことだと思うんですが、具体的に何をどうすれば
いいのか分からないんです。(;_;)ごめんなさい。
もうちょっと具体的に教えていただけるとうれしいです。
よろしくお願いします。
なかのさんこんにちは。
直接指定しないというのは言い方が変ですね。
要はドメイン名を指定して、DNSをひかせるとだめです。
そのサーバのIPアドレスを直接指定すると問題なく起動します。
いろいろやってみたところ、ドキュメントルートにCGIプログラムを置くと
問題なく動作します。
ナミさん、
ちょっとわかりませんが、
AN HTTPD のウィンドウを開いておいてやってみてください。
異常に時間がかかっているときにウィンドウのタイトルのところにはなんと表示されていますか?
(ふだん「待機中,httpd - 接続要求待ち」になっているところです。)
またトラブル発生です
教えてください
前回は会社のPCにこの環境を作ってうまくいきました
そこで家でも同じ環境を作ろうとしたのですがうまくいきません
トラブルはここの掲示板などにもよくある
CGIが表示するまでに異常に時間がかかるというものです
というかあたしの場合、HTMLはすぐに表示されるのですが
CGIになると開くのに異常に時間がかかりすぎてタイムエラーをおこします
まだこの環境でCGIをお目にかかったことがありません
そのうえ終了するとフリーズを起こしてしまいます(絶対)
一応下記の設定は済んでいます
1.Windowsディレクトリの hosts.sam を hosts にリネームする
2.Option-General の Get REMOTE_HOST を Never にする。
どうしたもんでしょう?
下記の件について、さきほど中田さんよりメールが届きました。
中田さんへ、ありがとうございました。
掲示板を見ていた方へ、どうもすみません・・・。
この度、httpd 1.18をダウンロードさせていただきました。
README.htmlをみて動作確認をしたいのですが、「http://127.0.0.1/readme.html 」
と指定しても「ページが見つかりません」とでてきます。
ブラウザはIE5を使用していますが、LAN接続の設定もわかりません。
どうか助けていただけませんか?
にったさん、
直接サーバのアドレスを指定 しない 場合、というのはどういう場合でしょうか?
サーバの名前を指定した場合、という意味なら、DNSがおかしいという話になるかもしれませんが、それにしてもHTMLファイルがOKなら変ですね。。。
Not Found は Error 404 のエラーで、httpd.log にもそれが記録されているでしょうか?
WindowsNT Server SP5にAnHTTPDをインストールしてローカルでCGIのテストが
完了しました。
テストの際にはhttp://10.0.0.5/index.htmlと指定していました。
これを実際のInterNet上に公開してみよう。と思い、公開用にアドレス等を
変更してみたところ、CGIプログラムが/cgi-bin/test.exe NotFoundとなり、
全く実行されません。
HTMLの部分は問題なく表示されるのですが、CGIだけ実行されません。
何が原因なのでしょうか?
上記エラーの状態でも直接サーバのアドレスを指定した場合(ローカルテストと同じように)
は問題ありません。
「違うパスのユーザ認証は同時にはできない」のでしたら、おっしゃるとおりの構成にした方が、確かにスッキリしますね。
いろいろといじっていて、ディレクトリと共に頭の中も混乱していたようです。
早速のご回答有り難う御座いました。
Pico_Chanさん、
違うパスのユーザ認証は同時にはできないと思います。
たとえば、/NAMAZU/ABC に原文、 /NAMAZU/EFG に"なまず"、として、ユーザ認証は /NAMAZU に対してXYZのアクセスを許す、とするのではだめですか?
ANHTTPのおかげで、なまずが泳ぐようにできました。有り難う御座いました。
そこで、質問があります。
Q.
パス/ABCには原文があって、パス/EFGにはなまずが居ます。
原文のパス/ABCは、許可されたユーザ/グループXYZだけがアクセスできるようにします。
なまずのパス/EFGは、フリーアクセスにしますと誰でも検索結果は得られてしまいますが、個別の原文を見るにはパスワードが必要になります。
ここで許可されたXYZ以外には検索結果を見せないようにしようとして、パス/EFGも許可されたXYZだけがアクセスできるように、パス/ABCとは別にパス/EFGにユーザ認証を設定しています。
すると、検索時にもパスワード要求、検索結果の表示にもパスワード要求と煩わしくなってしまっています。
ユーザ認証において、XYZにパス/ABCとパス/EFGとに同時にアクセス許可を与える方法はありますか?
ぽこさん、
おっしゃる通り、CGIで引数を与えてhtpasswdを動かすことができると思います(たぶん)。
のぼりさん、ならびにPDFをお使いの方々へ、
PDFのところを直したバージョンは今日もちょっと出せなくなってしまったので、すみませんが、今週末にしたいと思います。
ご了承下さい。
toshi さん、
すみません、説明不足でした。
HTTP/1.0 に HTTP/1.1の機能を部分的に実装することはできます。
Content Negotiation は HTTP/1.1にするための機能のひとつ、ということになります。
えむけいさん、
単一レンジの補完は次のバージョンで実現するようにしたいと思います。
If-Modified-Since の304の扱いについては、ヘッダ中に"200"があるのが原因でした(この場合はEtagの中)。
これも修正します。
またまた質問ですいません。
特定のディレクトリに制限をかける場合.htaccessをおくことや書式は分かったのですが、
それに対応するパスワードファイルの書式は決まったものなのでしょうか?
それとも毎回telnetで入ってhtpasswd なんたら かんたら と打ち込まなくてはいけないのでしょうか?
CGIの中からこのhtpasswdに引数(IDとパスワード)を与えてじっこうしてもらうようなことはできるのでしょうか??
吉田です。
こんにちは。RESが遅くなりました。
>>中田さんへ
>ログ更新の不具合は、サーバは連続で動いていて毎日更新なのに日付が変わっても更新
>されない、ということだと思っていいですか?
そういうことです。
こちらの環境はサービスとして起動しています。
>サービスの起動/停止については、私自身はふだんサービスで動かしていないのですが、
>そういうこともあったように思います。
>これも調べてみます。
お願いします。実際に自分のPCにインストールしても、再現します。
自分のPCはWorkstation + SP5 + IE5.0です。
>ぴゅあさんへ
ポートは80ではありません。
一応中田さんからRESはありましたが、10038です。
serviceのファイルを見てもなかったのでなにかぁと思いました。
そういえば、NetBEUIがないと、接続できない件まだ解決してないんです。(*_*)
(おぼえてます。いろいろ相談にのっていただいて、その節はありがとうございました。)
結局、サーバ機のメーカーにOSに関する質問のオプションを購入して、対応してもらう
事にしました。解決できるのかぁ?
ブラウザはIf-Modified-Sinceを付けていないのに304を返す現象ですが、ご覧のとおりまだ発生します。
=================================================
<<< Wed Jul 14 05:50:38 1999 <<<
GET http://www1.linkclub.or.jp/~michie/images/topmenu2kisekae.gif HTTP/1.0
>>> Wed Jul 14 05:50:38 1999 >>>
GET /~michie/images/topmenu2kisekae.gif HTTP/1.0
If-Modified-Since: Fri, 02 Apr 1999 16:03:52 GMT
Host: www1.linkclub.or.jp
<<< Wed Jul 14 05:50:39 1999 <<<
HTTP/1.1 304 Not Modified
Date: Tue, 13 Jul 1999 20:50:42 GMT
Server: Apache/1.2.6
Connection: close
ETag: "20070-911-3704ea68"
>>> Wed Jul 14 05:50:39 1999 >>>
HTTP/1.1 304 Not Modified
Date: Tue, 13 Jul 1999 20:50:42 GMT
Server: Apache/1.2.6
Connection: close
ETag: "20070-911-3704ea68"
=================================================
なぜか、まったく同じURLにまったく同じ要求を繰り返しているのに、200が返る場合と304が返る場合があります。200が返った場合のトレースは下のほうにあります(Connection: clで切れてるやつ)。1.18のときのトレースですが1.19でもHostが補完される以外は同様です。
キャッシュが格納されたフォルダを眺めていると、304が返る場合にはキャッシュファイルの最終更新日時は変化しませんが、200が返る場合にはキャッシュファイルの最終更新日時として現在時刻が設定されます。
キャッシュの有効期限切れの関係でしょうか? ちなみにLastModifiedFactorは0.20、DefaultExpirlyは0に設定してあります。
中田さん、えむけいさん回答ありがとうございます。
中田さん>Negotiation 自体はしているわけですが、今のところその結果によってリソースを返すところをユーザが設定できるわけではないので。。
もちろん自分で設定できないのはわかっていました。
私>なるほど、Content Negatiationは HTTP/1.0 では
私>実装してはいけないわけですね。
でも書いたように、HTTP/1.0のサーバにはContent Negotiationを実装しては
いけないのかなと思っていたところで
私>そういえば、インデックスリストやエラーメッセージの英語/日本語って
私>Content Negotiationの機能を使っているわけではないのでしょうか??
ということに気付いて疑問に思っただけのことでした。
誤解させるような表現で申し訳ありません。
結局、Content NegotiationはHTTP/1.1のものだからAN HTTP Serverに
実装できないのではなく、HTTP/1.1のものだから実装を後回しにしていると
ということですね。
どちらにしても、気長に実装されるのを待つことにします。
>ついでに、ブラウザからの Range: 付きリクエストの場合は、キャッシュの補完をしないよう
>にしておこうと思います。
>PDFなどの multipart の要求を(プロクシ/キャッシュは)まだ処理しきれないので。
明らかに単一の範囲だけですむような場合だけでも補完するようにできないでしょうか?
IEを使っている限り一切補完されないのではちょっと悲しいので。
PDFが1.18以降で表示できなくなったのは、Accept-Ranges: bytes を返すようにしたせいでした。
multipart/x-byteranges の処理がおかしかったようです。
対策版を 1.19b として明日出す予定です。(今日はちょっと時間がなくなってしまった。。)
あわせて、プロクシでHTTP/1.1をHTTP/1.0にバージョンダウンするようにします。
ついでに、ブラウザからの Range: 付きリクエストの場合は、キャッシュの補完をしないようにしておこうと思います。
PDFなどの multipart の要求を(プロクシ/キャッシュは)まだ処理しきれないので。
えむけいさん、
なるほど、接続が切れないのが問題になるわけですね。
おっしゃるとおり、とりあえずHTTP/1.0にバージョンダウンするようにしておきましょう。
toshiさん、
たしかにえむけいさんの言われるとおり Negotiation 自体はしているわけですが、今のところその結果によってリソースを返すところをユーザが設定できるわけではないので。。
>そういえば、インデックスリストやエラーメッセージの英語/日本語って
>Content Negotiationの機能を使っているわけではないのでしょうか??
Accept-Languageを見て応答を変えていますから、まさにContent Negotiationだと思います。
>Connection 関連で「接続を切る」のは Proxy の AN HTTPD ですね? サーバからの応答が>なければ AN HTTPD から接続は切らないと思うので、送信エラーが発生しているのかもしれま>せん。
理由は勘違いしているかもしれませんが、とにかく
==========================================
GET http://www.na.sakura.ne.jp/ HTTP/1.1
Host: www.na.sakura.ne.jp
==========================================
のような要求を送信すると、応答の末尾に
==========================================
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>501 Method Not Implemented</TITLE>
</HEAD><BODY>
<H1>Method Not Implemented</H1>
to /index.html not supported.<P>
</BODY></HTML>
==========================================
というものがくっつきます。
要求のHTTPバージョンを1.0にするか、
==========================================
GET http://www.na.sakura.ne.jp/ HTTP/1.0
Host: www.na.sakura.ne.jp
==========================================
要求ヘッダにConnection: closeを付ければくっつきません。
==========================================
GET http://www.na.sakura.ne.jp/ HTTP/1.1
Host: www.na.sakura.ne.jp
Connection: close
==========================================
いずれにしても、HTTP/1.1ではConnectionヘッダを付けなければPersistent ConnectionとみなされるのでPersistent Connectionに対応していなければConnection: closeを付けなくてはなりませんし、HTTP/1.1に対応していないプロキシがHTTP/1.1要求を受け取ったらHTTP/1.0にバージョンダウンしてから転送しなくてはならないはずです。どちらもRFC2068に書いてあります。
そういえば、インデックスリストやエラーメッセージの英語/日本語って
Content Negotiationの機能を使っているわけではないのでしょうか??
ちょっと疑問に思ってしまいました。
私>なるほど、Content Negatiationは〜
間違えました。Content Negotiation でしたね……。
>Content Negotiation は まだ できません。
>HTTP/1.1 の機能なので。
なるほど、Content Negatiationは HTTP/1.0 では
実装してはいけないわけですね。
わかりました。気長に HTTP/1.1 に対応するのを
待つことにします。
toshi さん、
Content Negotiation は まだ できません。
HTTP/1.1 の機能なので。 といってもバイトレンジもHTTP/1.1ですが。
これはもうしばらく時間がかかります。
sashi さん、
AN HTTPD は HTTPサーバ(httpd)なので、残念ながら、telnetのサーバ(telnetd)の機能はありません。
また ftpサーバ(ftpd)でもないので、ftpで接続することもできません。
それぞれのサーバが必要です。
のぼりさん、
1.18以降でPDFが表示できないのを私も確認しました。
どうもこれも Connection: ヘッダがらみのようです。これは至急対応します。
えむけいさん、
Connection 関連で「接続を切る」のは Proxy の AN HTTPD ですね? サーバからの応答がなければ AN HTTPD から接続は切らないと思うので、送信エラーが発生しているのかもしれません。
キャッシュの補完については、ブラウザが Range: を出すのを全く考えていませんでした。multipartは除き、できるだけ早く対応します。
Content Negotiationなるものの存在を
http://www.asahi-net.or.jp/~sd5a-ucd/docs/resource.html
で知ったのですが、AN HTTP Serverでもこの機能を
使えるようにならないでしょうか?
ちなみに、Content Negotiationを使えるようにする場合は
この機能を使って出力したものをProxyサーバには
キャッシュさせない指定ができるように
しておいたほうがいいと思います。
こんばんは。
素人な質問をさせてください。
httpd 1.19にTelnet接続は可能ですか?
どうも設定がわからなくて。
教えていただけたらうれしいです。
質問のオンパレードでごめんなさい。
Ver 1.18以降 PDFファイルが表示できなくなってしまったのは私の環境だけでしょうか?
Plug-in は、起動しますが、表示内容は空(<body></body> を実行した結果みたいに)
になってしまいます。
Ver 1.17dでは、正常動作します。
環境は、WindowsNT4.0 サービスパック5 です。
httpd.log には、
"GET /kanji.pdf HTTP/1.0" 200 64975
errors.log には、
Info: Multiple Ranges: bytes=63951-64974, start=63951, end=64974, totallength=64975
てのがでてます。
ぴゅあさん、中田さん!
解決しました。
jcode.pl問題はこちらのFAQ/Searchにもありました。
−−−−−−−−−−−−−−−−−−−−−−
jcode.pl を使うとエラーが出ます。
jcode.pl は、どうやら、
jcode.pl v2.0とそれ以降は、perl.exe
jcode.pl v2.0より前のものは、jperl.exe
で使う、というのが正解のようです。
-----------------------------------------
と、いうわけでjcode.plのバージョンをv 1.12.1.1のものにしました。
結果、正常動作しました。
オプション−一般−CGI実行プログラム名は、「perl.exe」ではなく「jperl.exe」
のままです。
read.htmlの説明に前出のFAQの内容を付け足すとわかりやすいと思います。
問題をひとつでも乗り越えるのは、快感ですね。
ぴゅあさん、回答ありがとうございます。
自分でもう一度調べたところ、http://www.kiwi-us.com/~gonosuke/cgibook/
の「よくある質問」に以下の説明がありました。
--------------------------------------------------------------------
jcode.plはパソコン用の perl でも使えますか?(1997/03/16)
おそらく、jcode.pl はパソコン用の perl (MS-DOS用のjperl.exeなど)では使えないと思います。
というのも、jperl.exe は Shift_JIS を理解できるようにコンパイルされていて、そのため jcode.pl の漢字変換ルーチンに変に反応してしまうのが原因だと思います。
おそらく、/\216([\241-\337])(\216([\336\337]))?/ の「\216」か何かがSJISの1バイト目に見えてしまって、そのため「(」が2バイト目と認識されてしまい丸カッコとは認識されず、結果、正規表現の中で開きカッコと閉じカッコの数が対応せず、エラーになったものと思います。
したがって、SJISを理解するように作られている Perl の「仕様」ということになります。DOS/Windows用の Perl でも、SJISを理解できるようにはコンパイルされていない場合は、> perl -wc jcode.pl とやれば「syntax OK」が出ます。
また、Mac版でもSJIS用でなければ使用できるでしょう。
--------------------------------------------------------------------
ということでした。なんとなくはわかりましたが、実際はどうすればいいのでしょう???
「だめ」ということかな?
>sashiさん
Jperlを使うのはどういう利点があるのだろうか?と常々思いつつ....
(特に単独ではなくAN HTTP Server専用として使う場合)
「jcode.pl を使うときは、jperl.exeをperl.exeに変更するんでしたよね。」
そうなのですか?久しぶりにちらっと2種類ほど見ただけでは何も書かれていませんでしたが
(注:サイト上の解説だけ)。
少なくとも「Jperl.exeを使うためにはPerl.exeを共存させないといけない」ようなので(共
存させること「もできる」?)Jperl.exeをPerl.exeに変えてしまうのは問題があるのでは?
というよりたぶん解説通りに処理していればこれでは正式なJperl.exeは呼ばれない筈?
[*1]「jperl.exeをperl.exeに変更する」という部分がAN HTTP Server内の設定のことを言
っているなら納得できますが。
昔読んだのでは「jcode.plを使う場合にはJperl.exeを使わないように」ということでしたが
(Jperlで日本語処理をしているようなのでjcode.plで更に日本語処理をするというのはおかし
い?という気もしたりする)。尤もかなり古い話ですが。
注:どうもjcode.plを使うためにはという注意書き(jcode.plの一部書き換えが必要?)と
いうことが書かれているらしい(README.jp)。
少なくともエラーが発生しているのはメッセージが正しければjcode.pl内のh2z_sjis()らし
い(jcode.plにもいくつものバージョンがありますが確認したのはちょっと古いv2.0)。面倒
なのでこの処理自身は解析していませんがJperl.exeを使っているからなのでは?という気もし
ないではありません。
最も手っ取り早く確認してみるなら(jcode.plを未改造なら)Jperl.exeはそのままの名前で
AN HTTP ServerでPerl.exeを指定してちゃんと動くかということを確認してみることでしょう。
それからJperl.exeの動作確認をしてみるのが近道だと思います。
久しぶりにJperl.exeに付いても調べてみましょうか。PerlもActivePerlとか色々出てきて
いますし(未だに使っているのはPerl for Win(v3.16だったかな?))。
あと2日ほどで暫くインタネから離れることになるのでどれだけ回れるか判りませんが。離れ
ている間はオフラインで少し内部調査とか解説書きとかに集中してみようかと思っていたりもし
ます。
P.S.
数人の方からAN HTTP Server,Perl,CGIなどに関する質問のメール頂いていたりしますが
当分の間メールを扱えないので2日後以降にメールを頂いてもご相談に乗れないので悪しからず。
ごめんなさい。ご注意ください。
はじめまして。AN HTTP Server Version 1.19を使わせていただこうとおもっています。
とても便利そう^o^
でも、ちょっとうまくいかないので教えてください。
jcode.pl で転んでいるらしいのですが、jcode.pl
は、ブラックボックスで。。
ホントのWEBサーバ上では、正常に動いているようなんですけど。
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
/\216([\241-\337])(\216([\336\337]))?/: unmatched () in regexp at jcode.pl line 510.
とIE4で出力されます。OSはWindows98です。
jcode.pl を使うときは、jperl.exeをperl.exeに変更するんでしたよね。
なにか、アドバイスがありましたらよろしくお願いします。
つまらない質問でごめんなさい
キャッシュの補完機能ですが、ブラウザがIEだとIE自身もRange付きのヘッダを送ってくるので、下記のようにヘッダがダブります。そのせいでサーバがIISだとmultipart/x-byterangesとかいう凄いものを返してくるので、AnHTTPDがマルチパートヘッダの一部を本体の一部だと思ってキャッシュに格納してしまう結果、キャッシュのデータが不正になります。
またこの場合IEには206 Partial Contentで返せばいいはずですが、200 OKで返してしまうというのはLAN内でのこととはいえちょっともったいないです。下記の例ではIEが付けているRange:ヘッダも11680-でたまたま同じですが、違う場合もあります。
あとIf-Rangeに対応していないようなので、更新日時の違うデータを組み合わせてしまわないかやや不安です。
===========================================================
<<< Sun Jul 11 23:52:18 1999 <<<
GET http://home.intercity.or.jp/users/tozawa/wsb/sn_wsb01.jpg HTTP/1.0
Accept: */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
Range: bytes=11680-
Unless-Modified-Since: Sat, 05 Sep 1998 19:07:31 GMT
If-Range: "f24ade6e0d9bd1:d4f"
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; WindowsNT)
Host: home.intercity.or.jp
Proxy-Connection: Keep-Alive
>>> Sun Jul 11 23:52:18 1999 >>>
GET /users/tozawa/wsb/sn_wsb01.jpg HTTP/1.0
Accept: */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
Range: bytes=11680-
Unless-Modified-Since: Sat, 05 Sep 1998 19:07:31 GMT
If-Range: "f24ade6e0d9bd1:d4f"
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; WindowsNT) via proxy gateway AnWeb/1.19
Via: 1.0 PCG-803
Host: home.intercity.or.jp
Range: bytes=11680-
<<< Sun Jul 11 23:52:19 1999 <<<
HTTP/1.1 206 Partial content
Server: Microsoft-IIS/4.0
Date: Sun, 11 Jul 1999 14:13:39 GMT
Content-Type: multipart/x-byteranges; boundary=[lka9uw3et5vxybtp87ghq23dpu7djv84nhls9p]
ETag: "f24ade6e0d9bd1:d4f"
--[lka9uw3et5vxybtp87ghq23dpu7djv84nhls9p]
Content-Type: image/jpeg
Content-Range: bytes 11680-27150/27151
===========================================================
以上を踏まえて、
1.ブラウザ側がRangeを付けてきた場合にはそれを削除して、あくまでプロキシのキャッシュ内のファイルサイズに基づいてRangeを付け直す。
2.ブラウザがIf-Rangeを付けてきた場合はそれも削除して、キャッシュに含まれるETagからIf-Rangeを付け直す。
3.multipart/x-byterangesに対応する(可能なら)。もっともRangeがダブらなければmultipartにはならないようなので当面は必要ないと思います。
4.ブラウザ側がRangeを付けてきた要求に対する応答では、206で必要な範囲だけ返す。
5.ただしブラウザがさらにIf-Rangeも付けていて、かつサーバからの応答に含まれるETagと異なっていた場合は、200で全部返す。
という風にできないでしょうか?
Proxy-Connectionと類似の問題ですが、HTTP/1.1クライアント(Mozilla5や「プロキシ接続でHTTP 1.1を使用」をチェックしたIE4/IE5など)からの要求を転送するときにConnection: closeをつけないのに接続が切れるため、やはりHTTP/1.1対応のサーバ(Apache/1.3.0など)が混乱してBad Requestを返すことがあるようです。
えむけいさん、
"Connection: cl" で途中で切れているのは、ちょっとわかりませんが、AN HTTPD が全部受け取りそこねている間にサーバからの接続が切れたのかもしれません。
"Proxy-Connection:" の方は、1.19 で転送しないようにしました。
IE5でAnHTTPDのプロキシを経由してxaxon.ne.jp上のページを見るとき、うまく取得できなかったり画像が1枚おきに表示されなくなったりします。
trace.logとtelnetでの実験をしてみた限りでは、IE5が要求ヘッダに付けている「Proxy-Connection: Keep-Alive」をそのまま転送し、要求の後でConnectionを切ってしまうため、xaxon.ne.jpのキャッシュサーバ(Squid)が混乱してBad Requestを返してくるのが原因のようです。
Connection系のヘッダは転送してはいけなかったはずですが…。
ぴゅあさん、どうも有り難うございました!
早速、調べてみます。
本当に、助かりました!≦(._.)≧
これからも、きっと(多分絶対)(笑)
いろいろと、お世話になると思うので、
よろしくお願いします。
なるべく、自分で解決する努力はしますが・・・・・(^^ゞ
trace.logを見ていたら、
--------------------------------------------------------------------
<<< Sat Jul 10 03:43:49 1999 <<<
GET http://www1.linkclub.or.jp/~michie/images/topmenu2kisekae.gif HTTP/1.0
>>> Sat Jul 10 03:43:49 1999 >>>
GET /~michie/images/topmenu2kisekae.gif HTTP/1.0
If-Modified-Since: Fri, 02 Apr 1999 16:03:52 GMT
<<< Sat Jul 10 03:43:49 1999 <<<
HTTP/1.1 304 Not Modified
Date: Fri, 09 Jul 1999 18:43:49 GMT
Server: Apache/1.2.6
Connection: cl>>> Sat Jul 10 03:43:49 1999 >>>
HTTP/1.1 200 OK
Date: Sun, 25 Apr 1999 14:21:22 GMT
Server: Apache/1.2.6
Last-Modified: Fri, 02 Apr 1999 16:03:52 GMT
ETag: "20070-911-3704ea68"
Content-Length: 2321
Accept-Ranges: bytes
Connection: close
Content-Type: image/gif
GIF89aa
--------------------------------------------------------------------
「Connection: cl」の続きがログを最後まで見ても見当たらないのですが、サーバからの応答がすでに途中で切れているのでしょうか?
にゅ、、
単にPERLがトラブって止まっていたようでした、、(w
再起動してから験して見たらちゃんと動いてくれた
(^^ゞお騒がせしました
>ぽこさん
「VBやCで使っていたような変数の使い方ができないので」というのはまだまだPerlを使いこ
なしていないからでしょう。ご存知の通りPerlはCでおこす前のテストにも使われたりしますか
ら(インタプリタ言語として)そこはテク次第です。CでありC++ではありませんが。
というσ(^ー^)はC++は好きではない(色々な理由から)。
で、確かにWinではflockは使えません。そういう手順で行うことになります。flock()を
シミュレートする手もあるのでは?とも思っていたりはしますが(その他もろもろ)。
尤もWin上でテストしている状態では入れる場所さえ間違えなければ機能するようにしてもあ
まり意味のないことのようにも思いますが。
自宅サーバを構築したいときにはどうするんでしょうねぇ。
たびたび質問ですいません。ファイルをロックする(&lock_fileでしたっけ?)はAN HTTPD上
では動かせないのでしょうか?というか、PC上には無い概念であるとは思うのですがこの行を入れるとエラーがでてしまいます。コメントにしておいてアップする際にはずしてサーバ上でエラーがでないことを確かめなければならないのでしょうか?
よろしくお願い致します。
PerlのPathを通す件ご回答ありがとうございました。これでわざわざコピーして修正する手間が無くなりました。最近夢中でいろいろ作っていますが、VBやCで使っていたような変数の使い方ができないのでとてもきたないソースになっています。今日Perl5マスターブックを買ったのでもうすこしお勉強させて頂きます。m(__)m
と、たびたびm(__)m
>中田さん
「サーバソケットを結合することができません。」などでも良いと思いますが誰にでも解る
?ようにするなら「サーバがポートxxを使用できません。」のような意訳でも良いような気も
したりします。
見落としてしまいました。
>にゃんこさん
CGIは動作するのでしょうか?
デフォルトの状態ではhttp://127.0.0.1/かhttp://127.0.0.1/~xxx/で呼び出されるindex.html
か(後者も含まれるのかは自信はない)拡張子が.shtmlでなければSSIは動かない筈です。通常
は後者としておくのが良いのかもしれません(色々な意味で)。
オプション−一般の一般プロパティシートの設定に問題がなく#exec ...がそのまま出てくる
というのであればこの部分の書き方が間違っているのかもしれません。当然添付されている基本
的な動作テストは済まされていると思いますので。というかそれを見ると解るような気も。
>吉田さん
既に(デフォルト状態のAN HTTP Serverで)他にポート80を使っているソフトが立ち上がっ
ているとそのエラーが出ます。
例えばプロキシサーバなどです。PWSなどもそうでしょう。
ということを(も)聞いている訳ではないですね?
始めましてcgiのテストの為にDL下のですが、
イマイチ良く解りません(>_<;)
SSIのテストで#execが頭についた呼び出し書きこみをすると
まんまその部分が変わらず表示されるだけで、パールスクリプトを呼び出してくれません。
どの様に設定すればいいのでしょうか?(>_<)
吉田さん、
ログ更新の不具合は、サーバは連続で動いていて毎日更新なのに日付が変わっても更新されない、ということだと思っていいですか?
サービスの起動/停止については、私自身はふだんサービスで動かしていないのですが、そういうこともあったように思います。
これも調べてみます。
10038 は Winsock のエラー番号(WSAENOTSOCK)です。
後で起動された方はそのエラーになってしまうと思います。
「結ぐ」は変でしたね。日本語としては「結ぶ」でした。
"Couldn't bind the server socket" なのですが、どう書くのがいいでしょう?。。。
yas さん、
ぜひやってみてください。
吉田です。
こんばんは。
httpdのプロセスが2つ出来る件ですが、自分のPCにhttpdをインストールして確認しました。
次のようなメッセージが表示されます。
Winsock error 10038:サーバソケットを結ぐことができません。他のHTTPサーバが
動いていないか確認してください。あるいはポート番号を変えてください。
とでます。
10038って何のポートなんでしょう?
あと、「結ぐ」ってなんか変じゃないですか?
近い将来、自宅のPCをサーバにできたらと思い、今資料を集めているところです。
http://www2s.biglobe.ne.jp/~sira-s20/
吉田です。
こんにちは。
この間にログの更新の件ですが、
Process log
referer.log
ua.log
はきちんとログが自動更新されますが、
cache.log
errors.log
httpd.log
は更新が行われません。
Traceログは大きいので取っていませんので分かりません。m(__)m
あと、もうひとつ。
Ver1.17でhttpdのサービスを起動/停止を行うと、停止時にプロセスが残る
場合があります。タスクマネージャで見ると、プロセスが残ったままになっています。
もちろん次の起動時にエラーがでいます。どっかのポートが重なるっていうようなエラー
でした。(あいまいですみません。)
httpd自体は起動されるみたいです。(タスクマネージャを見る限りではhttpdのプロセス
が2つあるので)
#すでに過去に出ていたらごめんなさい。6/中頃までのログにはなかったので。
#プロセスが2つあるみたいな記事がありましたが、ちょっと現象も違うようなので、
#投稿しました。
環境は
NT Server 4.0 SP4 + IE4.01 SP2
です。
調査の方お願いします。
>marさん(おまけ)
だった一つとなったと言っても1つ正しくしたためにそのエラーによって解釈できなかったた
めに隠れていたエラーがずらーっと出てくることもよくある話ですので(笑)。
>marさん
エラーの原因だったものが何であったかを報告しておいて頂けると助かります。
いい加減な英訳からですが式が不完全であるように言っていると思います。
例えば「A = B + C」という式が「A = B +」となって必要とする「C」がないといった具合で
す。調べてみてください。
なお、エラーを通知している行は必ずしもエラーがある行であるとは限りません。ある程度解
釈しようとして解釈しきれなくなった時点の行を示すので数行前に本当のエラーがあったり間違
え方によっては(if-endif分の組の間違いなど)全然別の場所を示したりするので注意する必要
があります。
このエラーの場合は示している行かその数行前後のものであると思われますが。
ぴゅあさん、どうも有賀とう御座いました!
おかげさまで、無事出来ました、、、と言いたいんですけど、、、
今度は、こんなエラーメッセージが、、でて来ちゃいました、、(涙)
************************************************************************ Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
Bareword found where operator expected at C:\www\mami\public_html\eztohyo\eztohyo.cgi line 135, near "print "
*************************************************************************
でも、エラーが一つだけになったので、大進歩です(笑)
またまた、いろいろといじくってしまったのがいけなかったのでしょうか??
本当に何も解らない初心者なもので、、、
どうぞ、よろしくお願いします≦(._.)≧
遅くなりましたが、
早速のレス、どうも有賀とう御座いました。
ありがとうございます
なんとか表示されるようになりました
これからもわけわかんない質問をすると思いますが
よろしくお願いします
ここの人たちは解答が早いし
とっても親切なので安心です
>ナミさん
それでいくと「ドキュメントルート\」の先は「pm-nami\html」と指定してあるのでしょう。
CGIが実在する場所がC:\www\pm-nami\cgi-binということですのでHTML文書を格納している
場所はC:\www\pm-nami\htmlなのでしょう。
そうであればドキュメントルートをC:\www\pm-nami,「~pm-nami -> ドキュメントルート\」
をhtmlとすればうまくいく筈です。
仮想パス/cgi-binはhttp://127.0.0.1/cgi-bin/hello.cgiとしたときに(http://127.0.0.1/~pm-nami/...
としたとき以外と考えたほうが仮想パス/scriptsなどを含めたときに理解しやすいかも)使われ
ますのでこのローカルパスは使うことがあるのならC:\www\pm-nami\cgi-binとしておくのが良
いでしょう。
http://127.0.0.1/~pm-nami/...とした場合ドキュメントルート+「~/xxx -> 」をルート
(根底)として指定される。即ちC:\www\pm-nami + htmlでC:\www\pm-nami\htmlフォルダ以
下にあるもの。
http://127.0.0.1/cgi-bin/...などとした場合仮想パス/cgi-binに設定したローカルパス
即ち今の設定のままではC:\www\cgi-binフォルダ以下(正しい設定はC:\www\pm-nami\cgi-bin
だがこの書き方を将来的に使わないのであれば無視して良い)にあるもの。
となります。チェックしてみてください。
>ぽこさん
一般プロパティシートの「#!の行を調べる」のチェックを外してください。そして必要に応じ
て(通常は必要ない筈)「.pl,.cgiの実行プログラム」の欄にPerl或いはフルパスで「C:\Perl\bin\Perl.exe」
などのようにPerl.exeを指定してください。
これでCGIのソースコードは全くいぢる必要はなくなります。ただプロバイダのサーバとAN
HTTP Serverが動いているWinの環境の違いによる部分は何等かの修正は必要となってきますが。
>marさん
Perlソースコードの頭の方が規定外の形になっているようですね?3WEBのサイトにある
ソースコードを持ってきたのだと思いますがマイクロソフト系のワードとかで編集してしまったとか
もあるのでしょうか?(5行目からいくと)
普通のエディタやメモ帳(ワードではない)で1行目が#!/usr/local/bin/perlなどのように
なっているか確認してみてください。まずこの1行目から違っていると思います。
>竜さん
確かに最近は理解しやすい書き方がされた書籍がかなり減ってきていると感じています。
丁度今プログラマ初心者を(すこし?)教育していたりしますが書籍が読める(つまり理解で
きるようになるということ)ようにがんばって努力してみてください。これはどの言語であって
も同じことです。
書籍から理解するコツをつかむまでは良い書籍を見つけるのは難しいことだと思いますが解り
難い書籍ではかえって理解を困難にするのでご注意を。そういう意味では1ページずつ理解して
行こうとはしないでざっと一通り読み流して理解できた部分とできなかった部分をはっきりさせ
て再度今度は1ページずつ読んでいくのが取り敢えず近道なのかなと思ったりします。
ちょっと寝坊にまだぼーっとしているのでちゃんと説明できたのか心配ですが....(~_~;)
URLはhttp://127.0.0.1/~pm-nami/cgi-bin/hello.cgi
ドキュメントルートはC:\www
仮想パス/cgi-binはローカルパスc:\www\cgi-bin
です
初めましてanhttpdをダウンロードさせていただきました。
どうも有賀とう御座います。
早速ですが、、、、
HTMLなら、大丈夫なんですが、、、
CGIを試すとこんなエラーがでて来るんですけど、、
******************************************************
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
Bareword found where operator expected at C:\www\mami\public_html\eztohyo\eztohyo.cgi line 2, near ")http"
(Missing operator before http?)
syntax error at C:\www\mami\public_html\eztohyo\eztohyo.cgi line 2, near ")http"
Bareword found where operator expected at C:\www\mami\public_html\eztohyo\eztohyo.cgi line 2, near "//www2"
(Missing operator before www2?)
Bareword found where operator expected at C:\www\mami\public_html\eztohyo\eztohyo.cgi line 2, near "3web"
(Missing operator before web?)
Bareword found where operator expected at C:\www\mami\public_html\eztohyo\eztohyo.cgi line 5, near ""MSHTML 5.00.2014.210" name"
(Missing operator before name?)
Bareword found where operator expected at C:\www\mami\public_html\eztohyo\eztohyo.cgi line 157, near "print "
*******************************************************************
いろいろ、パスとかも設定したんですけど、、、(; ;)
もう何処をどうして良いか解らず、、、、
長々と書いてしましましたがよろしくお願いします。
ナミさんと同じだとおもうのですが、perlの在処の指定をアップするときは#!usr/bin/perl
とかにしますがローカルの時は#!c:\httpd116\bin\perlとかにしてました。
これでもちろん動いていたのですが、アップする際に切り替えるのが面倒です。
ここをなんとかする方法はありますか?
オプションの一般のエイリアスを変えるのかと思ったのですがよく分かりませんでした。
もしできるのであれば教えて下さい。
でもAN HTTPDはものすごく重宝しています。一時期は落ちまくって困りましたが今は元気に
動いています。CGIがローカルでチェックできるものではやっぱこのソフトが最高ですね。
って、他にもあるのかなぁ?
よろしくお願い致します
ぴゅあさんへ
いろいろコメントありがとうございます。
Perl,CGIの本を何冊か買って読んでいるんですが、
なにぶん初心者なものですから・・・
今後ともよろしく!
>竜さん
Perlの基本的な書籍はお持ちですか?
サイトではリファレンス的なものは多くあっても実例は少ないかもしれませんね。
数値から文字は$num+''のような形で良かったと思います。或いは"$num"。
逆は$str+0とか。その他数字の部分だけを抽出する処理とか。
リファレンスも当然1冊は持っておくべきですが(サイトだけでこなすつもりならそれでも良
し)基本的なことを説明された書籍も別に持っておくべきです。こういった基本的なことは必ず
出ている筈ですから。
>ナミさん
URLをどう指定しているかを示していただければ説明しやすいのですが。
オプション−一般の一般プロパティシートのドキュメントルート辺りとエイリアスプロパティ
シートの仮想パス/cgi-binのローカルパスを確認してみてください。
中田さんへ
IE5ではメッセージがでなかったので,ネットスケープを入れてみました.
flock() is not available on Win95!
ということで,わかりました.Winではこの関数は使えないということですね.
簡単なことで,お騒がせしました.
助けてください
cgiを読みに行くと次のようなエラーが出ます
Error 404
見つかりません。 - CGIスクリプトまたはプログラムがありません :
C:\www\pm-nami\html\cgi-bin\hello.cgi
そりゃぁそうです
だってcgiがある場所は
C:\www\pm-nami\cgi-bin\hello.cgi
だからです
どうもパスの設定に失敗しているようです
しかしどこでこの設定を直すのかがわからないので困っています
どうか助けてください
私は今、Perl,CGIでブラウザのデータをクッキーに保存し、クッキーのデータをコントロールしようとしている。Perlで数値スカラーデータを文字スカラーデータに変換する関数もしくは方法を知っていますか?コメントお願いします。
星野さん、
エラー500では、errors.log, httpd.log はエラー内容の手掛かりになりません。
「内部サーバエラー」の画面で、実際に HTTPサーバが返してきたエラーメッセージを表示できると思うので、その内容をお知らせ下さい。
ただし、AN HTTPD のオプションで「CGI出力を検査」にはチェックを入れておく必要はあります。
えむけいさん、
申し訳ないです。ここ一ヶ月ばかり頭が本業の方に傾いていたせいか、ここでの要望のリストアップに抜けがありました。
今日付けの todo.html で追加しました。現在、上の方から対処中です。
>竜さん
まずCookieを自分(クライアント側で)で作れるかですがIE5ではWINDOWSフォルダのTemporary
Internet Filesにあります。他のバージョンはCookieというフォルダだったと思いますが。
ただ内容を見ても解らないでしょう。通常クライアント側ではその必要もないものですし。
まとめて消したいならCookieを無効にするとすればどのバージョンでも消せるでしょう。溜ま
り過ぎて掃除したいときくらいしか使うことはないでしょうが。
IE5では(IE4も?)インターネットオプションのインターネット一時ファイルの削除ですべて
のオンラインコンテンツを削除するにチェックを入れて削除をすれば全て消えてしまいます。
作るのは....
不可能ではありませんがIE5では特殊ファイルの扱いをしている筈なので難しいでしょう。自
分で作るものでもありませんし。
書いたことに関するセキュリティ的問題は特にないのだと思っています。知らぬ間に何処の
サイトでどういう情報の受け渡しが行われているのか必要なら知るのも良いのかもしれません。
なおCGIを使ってブラウザ側で登録,削除の指示をさせることは可能です(ボタンなどに対応
して処理させるだけ)。そのような用途は思いつきませんが。ただし当然ながら扱えるのはその
CGIのあるサーバに関するCookieだけです。
CGIでのCookieの作成,削除方法ですけどフリーのCGIソースコードを参考にするのが良いで
しょう。掲示板やチャットのCGIでは大抵使っています。尤も書き方の悪いものやブーム?の2000
年問題を残したまま(処理できるのか?)のものもあったりしますが。尤も2000年問題はそんな
に問題となるものでもないでしょう。そこまで信頼性を求めることもないと思いますので。
CGIやJavaScriptの書籍にも出ています。詳しいかどうかは別として。サイトでは特に探して
いないのでCookieまで解説したところはあまり見かけないようですが。
・Cookieを作る
'Set-Cookie: ID=VALUE'; expires=WEEK, DD-MM-YYYY HH:MM:SS GMT'
ID : Cookieを識別する名前
VALUE : Cookieとして保存したいデータ('ID1=VALUE1,ID2=VALUE2,...'とか作り方は自由)
WEEK : Mondayなど
YYYY,MM,DD : Cookieの期限(日付)
HH,MM,SS : Cookieの期限(時刻)
※他にもオプションがあったと記憶している。
・Cookieを削除する
'Set-Cookie: ID='
・Cookieを貰う
$ENV{'HTTP_COOKIE'}が(必要なら)設定したものと同じパターンであるかをチェックして
なかったら未登録。あったら(必要なら)分解して使う(上の例ではフォームから受け取ったと
きのデータに近い処理が必要)。別にTAB文字とか使われる筈のない文字をデリミタとすれば処
理は簡単。
・注意事項
Cookieを処理する場所は何処でも良い筈。SetCookieを発行した時点で処理される。
「=」,「;」の他「"」などの文字は含められなかった筈?(処理が面倒になることを含む)
日時は'GMT'と表記してGMTとするのが一般的だと思う。サーバ'HTTP/*.*'のバージョンに
も関係する?
あまり有効期限が長いのもそういうCookieばかりだとCookieファイルが肥大化するだけで好
ましくないと思う。
(記録されるときの)文字数上限は255文字だったと思う。
2000年が来てもちゃんと機能する(消されない)かどうかは不明(上の例の場合)。
Cookieはドメイン名(呼び方は忘れたが'www.xxx.co.jp'のような部分)とアカウント以降
のSetCookieしたパス部分とIDで区別されるらしい。従って同じCGIで複数のSetCookieを発行
できる。取り込んできたときは「;」がデリミタ。つまりフォームからデータを処理するのと同
様の処理が必要になる。ひとつのCGIで多数のCookieを発行されるのは好きではないが。1つの
サイト内でCookieを共有できるかどうかは未確認。
はじめまして,cgiを勉強するために,httpd1.18をインストールさせていただきました.
試しに,miniBBS8.8(http://www.rescue.ne.jp/)を動作させてみたところ,苦労の末,動いたので感動しました.
つぎに,eazyBBS1.12(http://www2.tky.3web.ne.jp/~laut/easy/)を動作させてみようとしたところ,BBSのデータファイルが見つからないようで,
HTTP 500 - 内部サーバ エラー
と出てしまいます.色々設定を見てみましたが,わかりません.
エラーログは
Wed Jul 07 02:17:09 1999 Error Response 500 Thread 0(ID= -279505) for "/users/ezbbs.cgi"
httpd.logは
127.0.0.1 - - [07/Jul/1999:02:17:09 +0900] "POST /users/ezbbs.cgi HTTP/1.0" 500 285
でした.何か解決のヒントでも教えていただけたら幸いです.
exe?でのCGI実行禁止オプションとかキャッシュに途中切れデータがある時の部分取得による補完とか予約デバイス名対策はどうなっているでしょうか? TODOにも載っていないようですが…。
竜さん、クッキー(COOKIE)に関しては関連文献を見るか、いろんなところで配布されているPerlのCGIスクリプトでクッキーを使用しているものを参考にしてはどうでしょうか?
文面から察するにクッキー以外にもいろいろ勉強されたほうが良さそうですが。
CGIやクッキーに関して優しく説明してある、とほほさんのページを紹介しておきます。
http://wakusei.cplaza.ne.jp/twn/
クッキーの設定項目のNAME=VALUEはどのファイルにあるんでしょうか(IEの場合)
また、仮にどこかのファイルに保存されているとして、このファイルの内容をクライアント側のブラウザから削除したり、追加したりできるのしょうか?コメントお願いします。
竜さん、
ヘッダとして(つまり空行の前に) Set-Cookie: を出力するのだと思いますが。。。
たとえば Perl のCGIなら、
print "Set-Cookie: ...\n";
print "Content-type: text/html\n\n";
とか。(順序は逆でもいいはず)
Set-Cookie: ヘッダを受け取ると後はブラウザが処理してくれるはずです。
浜庄さん、
上書きインストールでいいはずなのですが。。。
httpd.exe を引数をつけて起動したのでなければ、レジストリ HKEY_LOCAL_MACHINE\SOFTWARE\AnHttpd\default 以下にオプション設定は保存されているはずです。
そこが変わってしまったとしたら、前のレジストリの状態を復元できなければ解決策はないと思います。
吉田さん、
いくつかコードの簡素化を図ったのですが、その中にログの更新の部分もあります。
調べてみます。
クッキーってどこに設定したらいいの?書式は以下の通りだと思うけど・・・!
Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN; secure
ブラウザがIEの場合、Cookieというディレクトリの下にクッキーファイルが出力されていると思うけど、CGIファイルに設定したらこのファイルに値(NAME=VALUE)が返されるのかなー・・・
誰かコメントして・・・!
1.18いただきました・・・・・
しかし、上書きでインストールしたら、インストールする以前の基本設定が全部飛んでしまいました・・・
解決策ってありますかね?
こんにちは。中田さん。
お久しぶりです。
現在1.17を使っていますが、ログの機能で質問(バグ?)があります。
ログの更新機能ですが、ログが更新される場合とされない場合があります。
一度調査の方お願いします。
>竜さん
どちらを使うかは好みと用途等で好きなほうを使えば良いでしょう。
・cookie
通常有効期間と共に記憶させるので一定の時間を過ぎると無効となってしまいます。
長所としては自分(サーバ)側でデータを管理する必要がないこと。汎用性があること。同
一の人を確実に区別することもできること。
短所としてはcookieを受け付けてもらえないと全く意味がないこと。ブラウザを入れ替えたり
してもデータが消えてしまうことがあること(色々な理由から確実にデータが保持されていると
は限らないこと)。多用しすぎないこと。ちょっとプログラム的には(決め事も含めて)面倒で
あること。
・ファイル
保持するデータは好みで好きなだけ処理することができます。データ量を含めて。
長所としては全て好みに合わせて処理できること。cookieに比べると若干処理は楽でしょう。
短所としてはデータ管理を自分で行わなければならないこと。それによる弊害(一番ありがち
なのが [(注)文字化けのためこの部分一部削除] こと)がありがちであること。
といったところでしょうか。使い方によっては長所と短所が逆転する場合もあります。
一般的にはcookieとファイルを併用することが多いでしょう。
データ管理をきちんと設計し共に長所を引き出すことが大切です。
つまりはどちらか一方が良いということはないということです。
簡単な例でいえば個々の少量のデータであればcookie,統計的なデータや大量のデータの場合
はファイルに割り当てるといったところです。
どう使うかはプログラミングする人の腕次第。どちらか一方という考え方ではなくどう組み合
わせて使うのがベストであるかということを考えるべきです。
>t_kobaさん
やはりそうでしたか。あまり読んでいないので。(^ー^;)
あまり時間がなくて....
って今日もこの時間に帰ってきたところ....
ちゃんと読まなければ
ぴゅあさん回答ありがとうございます。
#!PerlIS
はPerlIS.dllとPerl.exeを使い分けたいという我が儘に対応していただいた仕様で
裏技的ですがoption.htmlにも記述されています。
というわけで、何かの拍子にSSIの引数付きが動かなくなってしまったものと。
ダイレクトに
http://localhost/test.cgi?test
とやった場合は正常に動作しました。
Perl,CGIを使用したプログラムで、ブラウザ上のデータを保存したい場合、クッキーを使用したほうがいいのでしょうか?それとも、Webサーバ上にファイルを作成し、使用したほうがいいのでしょうか?コメントお願いします。
猪狩さん、
オプションの「表示/インデックス」で、「スタートアップ」の「ホスト名/アドレスを取得」のチェックをはずしてください。
t_koba さん、
私も確認してみましたが、PerlIS.dll を使う SSI 自体がうまく動作していない状態になってしまっているようです。
調べて直すようにします。
えむけいさん、
確かにそうですね。直します。
はじめまして。
自分のWebページでCGIを動かす前段階のテストとしてWindows上でテストしようと
思い立ち、PWS上で試そうとしているうちに"WinBee"という方のページで
"httpd"の存在を知り、とても簡単にWebサーバを構築する事ができました。
このような素晴らしいソフトウェアを無償で公開して下さることに非常に
感謝しております。
ところで、今のところ気になる点が1つだけあり、それはhttpdの起動時にダイヤルアップ
ルータが発呼してしまう、という点です。
起動時の発呼を防止できる設定や、ルータの設定でこのポートをrejectすれば
良い、とった情報があれば教えて頂きたいと存じます。
当方の設定はhttpdのプロクシサーバ機能は"off"で、ルータの設定では
UDPの137-139はrejectしています。(OSはWin95,98です。)
>t_kobaさん
前バージョンで動いたというのはPerlソースコードの1行目を#!Perlとしていたのではないで
しょうか?
DLLの場合は判断をして(その場合にはロジックにもよりますが#!PerlIS.DLLと書けばよいの
かも知れませんが)別処理を行っているのかもしれませんが普通に考えるとソースコードの1行
目に書けるのは実行形式ファイル(バッチファイルも特殊な例で扱えるのかも?)のみだと思い
ます。
出ているエラー自身は確かにPerlIS.BAT,PerlIS.COM,PerlIS.EXEがない(NTならPerlIS.CMD
も含まれるのかな?)と言っています。
こんにちは、最近は特に問題無く使わせて頂いております。
下の書込みを見たのですが、佐々木修一さん等がIPについて
いろいろと聞かれていたようなんですが、私は
ダイヤルアップHP支援ソフト「ダイアルサ〜バ〜」
Copyright(C) 1996-1998 Mizuki Ayukawa. All rights reserved.
http://www.netlaputa.ne.jp/~ayu/labo/
と言うフリーソフトを使っています。
IP調べる時にも良いですが、指定時間に継いだり切ったり、IP
アドレスを告知したりと、なかなか良いと思います。
いつもお世話になっています。
Ver1.18にて、
#!の行を調べるをチェック、PerlISで実行を非チェックの状態で、
#!PerlIS
を付けたcgiにSSIで引数を<!--#exec cmd="count.pl count"-->と渡そうとすると、
<process.log>
Mon Jul 05 00:57:20 1999 C:\WINDOWS\COMMAND.COM /c PerlIS count.pl count
で、コマンドまたはファイル名が違います. のエラーになってしまいました。
前のバージョンでは動いたような気がしたのですが?
設定ダイアログを開いたままタスクトレイのメニューから終了しようとすると、HTTPDが落ちたりフリーズしたりします。
なんだか自分で書いていて言うのも何ですがわかりにくい書き方をしてました。
リスト自体はちゃんと表示されるんです。問題はその中身が表示されないって
言うところですね。
ってこれ書く前に理解されてる気がするのですが(笑
念のために・・・書きました。よろしくお願いします・・・。
中田さんバージョンアップありがとうございます。
入れてから一日たってますがまだ今のところ問題は無いようです。
何かありましたら報告します。
お礼までに。
やすさん、
UNIX上のNetscapeのURLの扱いの問題でしょうか。。。
インデックスリストのリンクはSJISのファイル名がそのまま入っているので、それを AN HTTPD が %XX という形にエスケープしておけばいいのかもしれません。
こちらで確かめてみます。
どうしようもないことだと思うのですが・・・念のために質問です(汗
私はUNIX環境も使ってます。ブラウザはネットスケープです。
ANHTTPDの設定でインデックスリストを表示にして使用してます。
ウィンドウズ環境ではインデックスリストでファイル名が日本語の物もちゃんと
表示されます。しかし、UNIXの環境では日本語の物は表示されず、404
エラーになってしまいます。これってやっぱりファイル名の文字コードの問題
なんでしょうか?
まささん、
まだちゃんとわかっていないのですが、ASP.DLL は ISAPI のインタフェースを持っているのにちょっと仕様が違うようなのです。
簡単に使えるようにはしていないのかもしれません。(IIS/PWS以外からは使えないのかどうか。。。?)
わかればすぐだと思うのですが、わからないとなかなか長引きそうです。
申し訳ありませんが、見守っていていただければありがたいです。進展があればすぐお知らせします。
奥村さん、
サーバ名は、あと、
コントロールパネル−ネットワーク−TCP/IPのプロパティ で「DNSを使う」になっている場合は、そこのホスト名(+ドメイン名)を拾ってきているかもしれません。
竜さん、
http://127.0.0.1/readme.html で何も表示されずに何の変化(エラーメッセージとか)も出ませんか?
高橋英文さん、
Perlのスクリプトなら、ここに示してもらうか、長いのならメールで送ってもらえれば、画面に出ない理由はわかると思います。
ども。ASPはしんどい?
>難航しています。
>最悪の場合、ASPは実装できない、ということもありえるという状況です。
>進展/変化がありましたらお知らせします。
むう(^_^;)
そうですか。
なんか、大変そうですね。
頑張ってください。
期待はまだ持ってますp(^ー^)q
>奥村さん
LANで繋がっていないマシンを使われているのですか?
別に気にすることはなりません(と思っています)。
どうしても変えたいのならネットワークコンピュータのプロパティの識別情報プロパティシート
のコンピュータ名を入れれば変わるかも?
ただデスクトップ上にネットワークコンピュータのアイコンがない場合はコントロールパネル
のネットワークでクライアント−Microsoft−Microsoftネットワーククライアントを追加すれ
ば同タブ(コントロールパネルのネットワークはこのプロパティのこと)が出てくる筈です。
たぶんインターネットに接続しているとき毎回パスワードを入力しているのでしょう。これを
追加することでパスワードを記憶させることが出来るようにもなります。記憶させない方が良い
場合もあるでしょうが使い方によりです。
会社のホームページに掲示板を作ろうとしています。”最新HTML&CGI入門”の付属CDにあったので使わせていただいています。
ただテスト用にノートパソコンにインストールすると、サーバ名が自分のインターネットのプロバイダのユーザ名になってしまいます。どこで変更すればよいですか?
よい参考資料等がありましたら、教えてください。
ありがとうございました。
>高橋さん&竜さん
もっと詳しく説明してください。
高橋さん
どのようにやろうとしているのでしょうか?
竜さん
ブラウザは何を使われていてどのようなエラー或いは状況にあるのでしょうか。
はじめまして。
WebサーバでCGIを実行したいのでインストールさせてもらいました。
初歩的な質問ですが、起動してhttp://localhost または http://IPアドレスと入力しても
ページが表示されないのですが、これはエラーですよね!また、何故このようになるか
教えてほしいのですが・・・?
質問があります。
テキスト形式のカウンタのことなんですが。
数字が画面に現れません。
単純なHello World!のCGIは出来るんですが。
まささん、
難航しています。
最悪の場合、ASPは実装できない、ということもありえるという状況です。
進展/変化がありましたらお知らせします。
ともさん、
とりあえずそれぞれのログの中身をみてください。
trace.log は HTTPサーバの入出力のすべての記録です。
なかじまさん、
皆さんに trace.log等を送っていただいて、原因の少なくともひとつはわかってきました。
何か傾向などわかりましたらお知らせ下さい。
ども〜。ASP推進者のまさです。
もうすぐ1ヶ月が過ぎますね。
ASPの実装状況は進んでますか?
期待してます。
こんにちは。
CGIとサーバの勉強に、とインストールさせていただきました。
素朴な疑問なのですがtrace.logやua.logなどと言ったlogファイルの具体的な内容を
知りたいのですが・・・・
CPU100%の件ですが、
みなさんいろいろ情報を書かれているようですね。
私の場合は、HTTPd動作中に他のソフトを使っていて、
特にアクセスがない場合でも発生するようです。
確かに CGI動作中に固まることは多いようです。
メモリを食う仕事をしたときかもしれませんが、
まったく何もしていないとき(logoutの状態)でも起こりました。
本日更地にしてNTごと再インストールしました。
後日報告させていただきます。
>中田さん
ご指導の通りに、インターネットに接続してからhttpdを起動してみました。
しかし、IPはやはり外からは入ってこれないものでした。
そこで、よく行くwebからtracerouteをしてみました。
それで分かったことは、私のIP(外から入れる)に来るひとつ前のIPを
httpdは表示しているということでした。
アドレスは奥が深いですね。昨日今日、関心をもった私には歯がたたないようです。^^;