中田様、Win98製品版でのテストの件、一度やってみたいと思います。
SSIの実行ですが、どんなSSIでもいいのでしょうか。
ANhttpdにSSIのサンプルスクリプトがあったと思うのですが、
これでテストすればよいですか?
いちおう、具体的なテスト要件を指示していただけるといいのでは
などと思いますが・・・
リソースが減るということはどこかのDLLからのメモリリークでしょうね。
斎藤さん、
これは CGIスクリプト中の話のようですから、/ で始まるのは仮想パスではなく ローカルの絶対パスで、\ でなく / を使うのは プロバイダのサーバが UNIX だからです。
ただ Windowsでも Perlスクリプトの中では パス区切りを \ でなく / にしてもよいのでまぎらわしいのですが。
そこで、ドキュメントルートのドライブに \cgi-bin\saitou とかいうディレクトリを作ればいいわけです。
そしてPerlスクリプトの中で /cgi-bin/saitou/... と書けば、そのディレクトリを指します。
これはあくまでローカルパス \cgi-bin\saitou\... のつもりですが \ を / に変えて /cgi-bin/saitou/... と書いているということです。
なお、CGIスクリプト中でも URLを指定するところには本当に仮想パスを使います。
入江さん、
Win98 問題とは、SSIでのシステムリソースの減少の話ですね。その後の進展はまだありません。
Win98のシステム(のDLL)の問題だろうと思ってはいるのですが、まだどこがおかしいのか特定できていません。
というわけで、TigerCat さん、
Win98(製品版)でSSIを動かした時、システムリソースが減るかどうか確認していただければありがたいです。
私が入江さんのご指摘で確認したのは Win98J beta3 です。入江さんは Win98J Build 1900 のはずです。
私が確認した範囲では、SSIを含むページにつき大体 2-3%ずつ減少します。もちろんSSIプロセス実行時には一時減少しますが、Win95では元に戻るところが戻らない、という話です。
httpd を終了しても復帰しません。また、Win98(beta3)とLAN接続したWin95からSSIにアクセスしてもWin98(beta3)でのリソースの減少が起きます。
ブラウザはMSIE4,Netscape4でほぼ同様です。
また質問で申し訳ございません。
CGIスクリプト中で、ファイルの読み書きなどをするときに、
「/」で始まる、仮想パス?で指定するとそこだけがうまく動作が出来ません。
普通通りに、「xxxx/yyy.dat」や「../xxx/yyy.dat」等とすると正常に動作します。
スクリプト中でなく、HTMLファイル上で仮想パスで指定すると正常に動作します。
相対パスで指定すればいいのですが、それだと実際にサーバで使用するときに
プロバイダさんからのチェックに引っかかってしまい、
どうしても、「/」で始まる仮想パスで指定したいのです。
(CGIとホームページのディレクトリが別にある為に「/cgi-bin/saitow/...」という指定でないといけないので..)
よろしければ、対処方法を教えてください。
中田様、いつも使わせていただき、感謝しております。
さて、おそらく皆様よりいち早く、7/25発売予定のWindows98製品版
(日本語版)を入手いたしました。
ANhttpdの現時点最新版を入れて使ってみましたが、特に目に付く
不具合などはありませんでした。
ちなみに、WindowsNT5.0beta1版では、サービスとして起動できない
などという報告をしましたので、是非beta2版を入手したいところで
したが、未だに入手できておりませんので検証できません。
申し訳ありません。
Win98 問題はどうなってますでしょうか?
セットアップも無事に終わり、難なく動き出しました。
しばらくの間、いろいろと試してみようと思います。
わからないことなどが出たときはよろしくお願いします。
北川さん、
うーむ。。。そう言われてみれば、、、どうなんでしょうか。。。
WinNT 上の Perl で open するのが、共有モードではないオープン(つまり排他的オープン)になっているすると、読み取り専用でも flock をかける方がいいのかもしれません。
確かめてみたことはないので、ちょっとはっきりしませんが。。
UNIXなどでは、読み取り専用では必要ないと思いますけど。
ken さん、
PerlIS は Perl for Win32 をインストールしたディレクトリにインストールする必要があります。
AN HTTPD は、Perl for Win32 をインストールしたときにできるレジストリキー
HKEY_LOCAL_MACHINE\SOFTWARE\ActiveWare\Perl5
の 値 BIN の データ に格納されているパスに PerlIS.DLL があると思っています。
よっしーさん、
これはなんとも答えにくいですね。
ディスク容量はサーバに置くファイルの分だけ必要です。
仮想メモリ用の空きがなくなってくると HTTPサーバに限らず落ちやすくなるような気もします。
PCのパワーはパフォーマンスに影響しますが、サーバとして動かないということはありません。
なべさん、
AN HTTPD の現在のプロクシ/キャッシュでは、認証済みのデータをキャッシュファイルにしてしまうのが原因でした。
とりあえず、認証つきのページをキャッシュしない、という対策は次の(今週末予定の)版でできる見込みです。
ただし、その場合もすでにキャッシュされているファイルは削除してもらわないといけないかもしれません。
なお、現状でもキャッシュを使わない設定にすれば認証はちゃんとおこなわれると思います。
たびたび、北川です。
flockの話ですが、読取専用で開いてもflockすべきなのでしょうか。
環境はNT Workstationです。同じファイルを同時に開くことはできないのでしょうか。
おはよーございます。
レスポンスありがとうございました。
PerlISをインストした場所が見えてないということですね。
相対パスでなくて絶対パスで各所点検してみます。
ありがとございました。
思いっきり初歩的なことですいませんが、
サーバを構築するのに必要なディスク容量ってどれくらいですか?
また、PCのパワーは重要ですか?
Pentium-133 の 32MB-MEM なんですけど...
>プロクシを通した時にユーザ認証がはたらかない、という話はありました。未解決ですが。
え、そうなんですか。がーーん。
仕方が無い、NTServerでIIS使って立ち上げるかな。
でもIISはよく分からないし、どうしよう?
はやくバグ直してください、お願いします。
中田さん。
お答え、ありがとうございました。
先ほどのコメントは、ひとり改行しまくり、
スペース、取りすぎてすみません。
これからも精進します。よろしくお願いします。
新井さん、
もちろん紹介してくださるのは歓迎です。よろしくお願いします。
以前、私のページでこちらのページをlinkさせて頂いた新井です。その後アクセスカウンタ
と、訪問者登録を私のページにも追加出来ました。
今後、1ヶ月後を目標に、HP作成のページを公開する予定です。そのなかで、こちらのページ
と、Anhttpdを紹介したいのですが、宜しいでしょうか?
おわび
本日朝 7時過ぎから 17時過ぎまで、ここに投稿できない状態(Permission Denied)になっていました。
誤って実行権をはずしてしまったためです。
えむけいさん、
nph については、だとすると、nphの判定がおかしいですね。どういう時にそうなるのか調べてみます。
(調べなきゃならない項目がずいぶんたまってしまいました。。。)
不完全なキャッシュのオフライン時の利用、と、リダイレクト(302)などのキャッシュについては取り入れるように考えます。
(考えなきゃいけない項目もまたたくさん。。。。)
北川さん、
SingleThread にすると一度にひとつのCGIプロセスしか動きませんから、多少遅くはなると思います。
ロックファイルを使う方式は完全ではないので、NTでしたら flock を使う方がいいと思います。
recv() received 0 bytes は、ソケットが 0 bytes 受け取った、つまりデータを受け取らなかった、ということですが、時々は発生するかもしれません。
その前に Error が出ていなければ大丈夫だとは思いますが、絶対に大丈夫とは言えません。
naru さん、
minibbs 動いたようでおめでとうございます。
他のCGIを動かすときには、minibbs などと同様、「環境にあわせて書きかえるように」という指定のあるところを書きかえることになるでしょう。
そのような指定がない場合は、冷たいようですが、それらしいところをさがしてみるしかないと思います。
たとえば、 http://www.vector.co.jp/authors/VA003760/ へのリンクをクリックして「302 Found」
で http://hp.vector.co.jp/authors/VA003760/ に飛ばされたような場合、オフラインでもう一度リンク
をクリックしてもジャンプできません。
エラー応答がキャッシュへ残らないからだと思うのですが、なんとかならないでしょうか?
私の環境だとnphなcgiを走らせても
------------------------------------------------------------------------
HTTP/1.0 200 Document follows
MIME-Version: 1.0
Server: AnWeb/0.9b9b
Date: Saturday, 27-Jun-98 19:12:24 GMT
Connection: Keep-Alive
Pragma: no-cache
Last-Modified: Saturday, 27-Jun-98 19:12:24 GMT
HTTP/1.0 200 OK
Content-Type: text/plain
1
2
3
4
5
------------------------------------------------------------------------
のように、サーバの付けたヘッダも二重に出力されているようなのです。
どういう原因が考えられるでしょうか?
キャッシュの件で追加ですが、オフラインのときは不完全なファイルでも最大限利用
してくれると嬉しいかもしれないです。
中田さん、すばやいお返事ありがとうございます。
>select failed ... は、ソケットのデータの受け付けに失敗した、ということで
>すが、原因はわかりません。
>CGIのところで出るとしたら、Options/General の CGI/SSI Process
>Control の SingleThread をチェックしてみてください。
>CGIでファイルアクセスの競合が起きているのが原因だと思います。
以前(beta7)にsingle threadにしてみたところ、プログラムの実行速度が
極端に遅くなってしまったので(5秒ぐらいのものが5分ぐらいかかる)
今は止めていたのですが、single threadにするとプログラムの実行が
遅くなってしまうということはないでしょうか?
ファイルアクセスの競合とはどういうことなのでしょうか?ロックファイルを作ってスリープさせているのですが、それだけではいけないのでしょうか。
それと、また分からない警告が出てしまいました。
何度もすみませんが意味を教えて下さい。
---
Sun Jun 28 00:52:07 1998 Warning: recv() received 0 bytes in ClientRead() for Thread 0
はじめまして。
さきほど、minibbsが動いて飛び上がって喜んでしまいました。
中田様、ありがとうございます。
ところで、すごい初歩的な質問なんですが,minibbsの場合、
「◆このスクリプトをURLで設定
$reload = 'http://127.0.0.1/~naru/bbs/minibbs.cgi';」
という部分を書き換えたんですが、他のCGI(他人の作った)を動かすとき、
どの辺を書き換えたらいいんでしょうか。
なべさん、
プロクシを通した時にユーザ認証がはたらかない、という話はありました。未解決ですが。
NT Server 4.0 からのリクエストに何か特有のことがあるのでしょうか。。。
あるいは それだけプロクシ経由とか、つなぎかたに他と違うことでもあればお知らせ下さい。
ken さん、
一人(クライアント一つ)でも、1ページ当たりのリクエスト数(=ソケット数)は画像を多用していたりするとその分多くなりますね。
限界が何で決まるかということについては、たしかにマシンのメモリ量なども関係するのかもしれません。
エラーコード 1157 は ライブラリ(DLL)が見つからない、ということです。
この場合は PerlIS をインストールされていないのではないでしょうか(?)。
エラーコードの一覧は、 Win32 API のエラーコードを定義している winerror.h にはあるのですが。。。
Win95マシンとNTWorkStation4.0マシンとNTServer4.0マシンの3台が繋がっている状況で、
AnHTTPdをWin95マシンに導入してWebサーバにしたのですが、
NTServerから繋げた時アクセス制御とユーザ認証が機能しません。(T_T)
Win95とNTWorkStationのマシンから繋げた時は正常に機能するんですけど。
ただ認証や制御するフォルダをドキュメントルート"/"にしたときはNTServerでも
ちゃんと機能するんですけど。
あ、質問がもうひとつあります。CGIのテストなんですが
エラーログに以下のメッセージがでますが、エラーコードの
詳細が書いてあるところはどこかないのでしょうか?
1157て何でしょう?CGI初心者です???
Sat Jun 27 10:52:57 1998 LoadLibraryEx("C:\jpal\bin\PerlIS.dll")
failed with errorcode = 1157
中田さんこんにちわ。
ベータ7時代から使わせて頂いていますが、最新版に変えてみてパフォーマンス
の向上にびっくりしました。
自分のマシンは95でCPU120Mz、メインメモリは76Mでモデムは
28.8k仮想メモリを最大350Mにして使っています。ANHTTPD
を上げる時はZIPドライブなどI-Oチェックなど行っている常駐プログラム
は全て停止してテストしています。
ベータ7の頃は同時アクセスが3〜4人でダウン(画面が黒くなりました)して
いましたが最新版だと12〜14人くらいまでの同時アクセスによく耐えていま
す。キャッシュ機能の追加もパフォーマンスの向上によく役立っていると思いま
す。
ただ20人を超えるアクセスがあるようだと画面は黒くならずにフリーズしてし
まいます。WINソケットの限界でしょうか?を通るHTTPの問題よりもマシン
のパフォーマンスの問題だと思っていますがどうでしょうか?
ISDNにして2チャンネルポートを束ねて使えるTAで回線は128Kに、
CPUは330Mzにしてメインメモリも128Mに増強すれば同時アクセス
20人を超えられるかもしれません。
ちなみにここでいってる同時アクセスとは正確に同時に20人ではなくリクエスト
がかわるがわる入り込んできている状態で5分前後の間に20人という事です。
えむけいさん、
NPH で返すべきヘッダそれ以外にはないと思います。(Content-length: も不要だと思いますが。)
ブラウザが Netscape では nph らしく動くはずですが、MSIE ではなぜかどうもうまくいきません。
キャッシュの途中切れの場合はそうですね。改善します。
北川さん、
select failed ... は、ソケットのデータの受け付けに失敗した、ということですが、原因はわかりません。
CGIのところで出るとしたら、Options/General の CGI/SSI Process Control の SingleThread をチェックしてみてください。
それで出なくなるようなら、CGIでファイルアクセスの競合が起きているのが原因だと思います。
それでも出るなら、別の話で、調べてみないとわかりません。
エラーコードについては
Error 404 は、ファイルが存在しない、というエラーです。
Error 500 は、サーバエラーですが、AN HTTPD の場合は、 CGIがうまく実行できない、というのがほとんどだと思います。
ということにはなりますが、
CGIの問題ではなくて Error 500 になることもあります。
たとえばログで、for "/cgi-bin/nph-Fsearch.cgi" とあったら、http://127.0.0.1/cgi-bin/nph-Fsearch.cgi としてローカルでどんなエラーメッセージが出るか見てみてください。
そのときに Options/General で、Parse CGI Output にチェックを入れておいてください。でないとエラーメッセージが表示されません。
キャッシュに途中で切れているファイルが残ってしまうと次回もそれを読み込んでしまうため、
なかなか完全なファイルにアクセスできない場合があります。
Content-lengthなどから途中で切れていると判断できる場合には、無条件で破棄するとか残り
を落とすようにできないでしょうか?
>NPHスクリプトは使えるはずです。スクリプト名は nph- で始まっている必要があります。また、スクリプトでレスポンスコード("HTTP/1.0 200
>OK\n" とか)を含め完全なヘッダを返すようにしてください。
横から便乗質問しますが、どうもうまくnphになってくれません。もちろんファイル名は「nph-」で始めています。
ステータスコードのほか Content-type と Content-length は返しています。「完全なヘッダ」とはそれ以外にど
のようなものを返す必要があるのでしょうか?
中田さん、ご教授どうもありがとうございました。
なんとなく分かったような気がします。
これからは、自分でももう少し勉強してみます。
ではまた。
なおさん様
レスありがとうございました。
仰るとおりにしましたところ、見事イメージを呼び出せました。
(小さなことですが)成功したときはとても感動しました。
実現できてよかったです。
それでは、失礼しました。
北川です。
でしゃばります。(^^;
HIKO-TTHPさんへ
>「ExecProg. for .pl, .cgi」って何なんでしょう?(^^;
これは、HTTPDのoptions->generalの上からだいたい11行目ぐらいに
ある欄です。ここに、perl.exeへの絶対パスを書くということではないで
しょうか。
こんにちわ。
AN HTTP Serverについて、質問があるのですが。
以前投稿された、すだすだこさん、めいさんと同じ問題です。
ローカルで CGI がどうしても動作しません。エラー表示は、
Error 500
CGI Error - can't exec "perl c:\www\tthp\public_html\bbs\minibbs.cgi ", errorcode = 2, No such file or directory
です。それで、perl.exeは、C:\www\perl\binにあります。
それでこの対処法は、中田昭雄さんのご解答によると、
>C:\www\perl\bin に perl.exe はありますよね?
>だとしたら、とりあえず ExecProg. for .pl, .cgi のところを 単に perl ではなく、C:\www\perl\bin\perl.exe としてください。
>もし、perl.exe が違うところにあるなら、それなりに変えてください。
という解決法らしいのですが、この「ExecProg. for .pl, .cgi」って何なんでしょう?(^^;
どこの部分のことをさしてるのでしょうか?なにかのアドレスでしょうか?GREP検索で検索してもでてきませんでした・・・
よろしくお願いします。
北川です。中田さんお返事どうもありがとうございます。
やはり、サーバは落ちていました。
httpのバージョンを0.9beta9bにしてみました。
複数のマシンでほぼ同時にcgiプログラムを作動させると(多分、これのせい
だと思うのですが)以下のような警告が現れます。
---
Fri Jun 26 21:45:06 1998 Warning: select failed (code = 10038), continue...
---
これが、同じ秒に101個も書かれてしまいました。
いったいなんなのでしょうか?
error の404と500は何なのでしょうか。本当に初歩的な質問で申し訳
ありません。私自身が見たことがあまりないので、よく覚えていないのです。
まことに申し訳ありませんが、お教え下さい。
でしゃばります。(^^;
齊藤さん:
環境がわからないので、「恐らく」これならうまくいくだろう
というソースです。
$img = "image.gif";
open(IMG,$img);
@IMGSTAT = stat($img);
$BYTE = $IMGSTAT[7];
print "HTTP/1.0 200 OK\n";
print "Content-type: image/gif\n";
print "Content-length: $BYTE\n\n";
binmode IMG;
binmode STDOUT;
while(<IMG>) { print; }
close(IMG);
一応私は同じソースを使っているので動作確認済みですが、
これで駄目なら・・・、私にはわかりません。(^^;
<BLOCKQUOTE>
>/bin/cat は Windows にはありません。DOS/Windowsにしいてあてはめれば、バイナリモードの TYPE です。
>面倒ですが、$img を open して binmode で読み込み、(binmode で) print しないといけないと思います。
</BLOCKQUOTE>
コメントありがとうございました。
..でいろいろやってみているのですが、よく方法がわかりません。
出来れば具体的に方法を教えてくれるとありがたいです。
関連ページのURLでもいいので、どうかよろしくお願いします。
O-ZONE さん、
プロクシで、どういう場合にレスポンスがなくなるか傾向のようなものがあったらぜひお知らせ下さい。
TOMさん、
0.9 beta 8e をダウンロードできるようにしました。
これで落ちないようでしたら、その旨ぜひお知らせ下さい。
ken さん、
どうもありがとうございます。
どの程度のアクセス頻度に耐えられるかは、HTTPサーバの問題なのか Winsockの限界なのかも含め、あまり検証できていません。検討課題です。
このあたりやもろもろの不具合がある間は 「ベータ版」の文字はとれません。
北川さん、
errors.log の内容についてですが、
Client Abort や Warning: connection reset は、ブラウザ側で中止ボタンを押した時に出ます。
が、それ以外に何か問題があるのかもしれません。
Error Response 500, 404 は、そのエラーがブラウザで見えていると思います。
CGIの動作が遅くなるのは、httpd が原因でそうなることも考えられます。
ping でサーバ自体が生きていることが確認できてブラウザでアクセスできないのなら、httpd が落ちている可能性が高いです。
NPHスクリプトは使えるはずです。スクリプト名は nph- で始まっている必要があります。また、スクリプトでレスポンスコード("HTTP/1.0 200 OK\n" とか)を含め完全なヘッダを返すようにしてください。
アデカットさん、
.cache_welcome は たとえば http://www.st.rim.or.jp/~nakata/ としたときにできるキャッシュファイルです。
サーバにより、デフォルトのファイル名は index.html, welcome.html, default.htm などいろいろありうるので。
Expires(LastModified) は、Last-Modified を返す通常の HTMLやイメージファイルの期限切れで、CacheLastModifiedFactor が期限の判定基準になります。
Expires(Default) は、Last-Modified がない CGI/SSI の出力などの期限切れで、CacheDefaultExpiry で期限切れかどうか判定します。
なお、以上はそうなるはず、ということであって、上の説明通りではないところがあるかもしれません。
中田さんお返事ありがとうございます。
PROXYのポートの件は良く解りました。
やはりお答え頂いた通りで、PROXY専用で起動してもレスポンスの件は解決しません
でした。
自分でも色々と調べてみたのですが、原因となるようなものは見つかっておりません。
お役に立てるような事がありましたら、またこちらに書かせて頂きます。
はじめまして。
WinNTでサービスに登録してANHTTPD使っているのですが,beta9になってからよく落ちます。
beta8の頃は落ちることは無かったのですが・・・。
ワトソン博士が致命的なエラーって言ったり,アクセス違反を起こしてしまいます。
あまりによく落ちてしまうので,beta8eに戻そうかと思ったのですが,すでにファイルを消して
しまって戻すことも出来ません。
申し訳ありませんが,beta8eがダウンロード出来るようにしていただけないでしょうか?
バージョン0.9のベータ7を使わせて頂いております。
アクセス頻度が高いとき(1分間に10人前後)の場合
プロクシ設定もしていますが、ダンマリになってしまいます。
通信ソケットが高いアクセスで耐えられない状態なのでしょ
うか?
28.8Kで接続していますのでこういった環境では高い
アクセスでの運用は無理なのでしょうか?
それともこの程度のアクセスでダウンするソフトではない
のでしょうか?
それにしてもすごいソフトです。
製品化されたらすぐ買いますのでお知らせ下さい。
製品化されたら何十万もするのかな?
とにかくがんばって下さい。
はじめまして、今大学でAN HTTPを使わせていただいている北川と申します。
毎日、「これを作った人はすごい!!」と叫びながら使わせていただいています。
そこで、すこし、というか、かなり質問があります。
errors.logの中に
---
Wed Jun 24 04:28:38 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Wed Jun 24 04:28:45 1998 Error Response 500 Thread 2(ID= 230) for "/cgi-bin/nph-Fsearch.cgi"
Wed Jun 24 04:28:45 1998 Error: Can't send error response header (500) for Thread 2 (ID = 230) with errorcode 10054 for socket 660
Wed Jun 24 04:28:45 1998 Warning: connection reset during recv() in ClientRead() for Thread 3 (ID = 214) with WSAECONNRESET
Wed Jun 24 04:28:45 1998 Warning: connection reset during recv() in ClientRead() for Thread 4 (ID = 216) with WSAECONNRESET
Wed Jun 24 04:28:45 1998 Warning: connection reset during recv() in ClientRead() for Thread 5 (ID = 217) with WSAECONNRESET
Wed Jun 24 04:28:45 1998 Error Response 404 Thread 6(ID= 222) for "/search/fsearch.htm"
Thu Jun 25 00:41:15 1998 Warning: connection reset during recv() in ClientRead() for Thread 0 (ID = 285) with WSAECONNRESET
---
と、あります。
また、通信回線の問題かもしれませんが、CGIの動作がすごく遅くなって
しまうことがあります。
環境は、DOS/V,NT Workstation,Jperl+jcode,multi Threadです。
今、自宅にいるのですが、大学のWWWに接続できないようです。
落ちているのでしょうか?
現在では、NPHは使っておりませんが、使えますか?
初心者で分からないことも多いと思いますが、どうかお教えください。
それともう一つ。
キャッシュログをみたら、
Thu Jun 25 04:12:34 1998 Hit: ファイルの絶対パス
Thu Jun 25 04:12:34 1998 Expires(LastModified): ファイルの絶対パス
とか、
Thu Jun 25 22:40:10 1998 Hit: ファイルの絶対パス
Thu Jun 25 22:40:10 1998 Expires(Default): ファイルの絶対パス
というような記述がありましたが、これってページにヒットした時点で
そのページのキャッシュの期限が切れてしまってるってことですよね?
プロクシ設定では、
Cache Expiry Check: On
CacheLastModifiedFactor: 0.20
CacheDefaultExpiry: 6hrs
を指定してるのですが、これがまずいのでしょうか?
また、キャッシュログの Expires(Default) と Expires(LastModified) の違いについて
教えていただけませんか?
初歩的な質問ばかりですみません。
さきほど、ブラウザのヒストリ、メモリキャッシュ、データキャッシュを
すべてクリアして、再度試したらちゃんとドキュメントルートのページが表示されました。
なぜ・・・?? ルータのせい?
それと、キャッシュディレクトリ内の「.cache_welcome」というファイルは何なのでしょうか?
中身は「ヘッダ+index.htmlの内容」なんですが。
吉田さん、
了解しました。しばしお待ちを。
いっつさん、
そうですか。そうすると Set-Cookie: がらみのバグかもしれません。
調べてみます。
# PerlIS で "Location:..."を出す時は "HTTP/1.0 302 Found\n" でした(\nはひとつ)。
アデカットさん、
おっしゃる通りの設定だと、
ブラウザからプロクシサーバに対して、GET http://192.168.0.2/ HTTP/1.0 というリクエストを出し、
プロクシサーバは 192.168.0.2 に接続し、GET / HTTP/1.0 というリクエストを出すはずです。
192.168.0.2 がプロバイダのサーバのIPアドレスにアドレス変換されているように思えますが。
なおさん、
PerlIS(.dll) と Perl for Win32(perl.exe) の Build番号は一致していないとまずいのだろうと思います。
それ以上は私は試していないのでまだわかりません。
他の方からも情報をいただけるとありがたいですが。
吉田です。
>そうすると直接 URL で http://host/path/aaa.cgi とした場合、Win95ならいいけれども >NT だと動作しない、ということですね(?)。
そういうことです。
よろしくお願いします。
PerlISは使用していません。
Set-Cookie: を5回の後、Location: を使用しています。それ以外の出力は行っていません。
Perlで以下のようにしています。
<CODE>
print "Set-Cookie: $str=$val; expires=$date_gmt\n";
print "Location: hoge.cgi\n\n";
</CODE>
#"HTTP/1.0 302 Found\n\n"が必要なのは知りませんでした。(^^;
初めての投稿になります。よろしくお願いします。
プロクシサーバの仕組みについて質問させてください。
(使わせてもらってるバージョンは 0.9 beta 9bです)
現在、自宅でISDNルータを使ってプロバイダに接続しており、
マシンのIPは 192.168.0.2 となっていて、ブラウザ側
(Communicator4.5)のプロクシ設定を Manual Proxy Configuration
で 198.168.0.2 のポート 80 と指定しています。
この設定で、ブラウザで http://192.168.0.2/ を見に行くと
プロバイダのドメインの表紙のページが表示されてしまいます。
自分のマシンのドキュメントルートにおいてあるページが
表示されないのです。これがプロクシの正しい機能なのでしょうが、
なぜそうなるのかわかりません。他のアドレスの場合だと、ちゃんと
そのアドレスのページを探しに行くのですが・・・
プロクシの仕組みって、どうなっているのでしょう?
初歩的な質問ですみません。
しまったぁ、また中途半端な情報を流してしまった。(^^;
Buildですが、310ではrename可能、312〜315ではCGI/SSIが
実行すらできず、316ではCGI/SSIは動作するがrenameは不可、
という結果になりました。
PerlIS.dllがperl300.dllを使っているなら、Perl for Win32
のBuildにも関係していると思いますので、実行すらできない
場合はPerl for Win32のBuildを変更すれば良いだけだと思い
ますが、同じBuild 316でrenameできないのは論外ですよね。(--;
PerlIS.dllの件ですが、Perl for Win32 Build316がインストール
されている環境で以下のようになりました。
PerlIS.dll Build 310 rename可能
312〜316 rename不可能
ということで、310でないとrenameは使えないようですね。
#perl.exeならrenameはうまくいきます。(^^;
しかも、ANHTTPDをインストールすると入っているisssi.shtmlですが、
310と316だとちゃんと実行されるんですが、312〜315では実行されません。
うーん、Buildによって随分差があるもんですね。
(というより、PerlのBuildと合ってないからかもしれないけど)
ということで、ANHTTPDで推奨するPerlIS.dllのBuildを、現時点では
310に限定した方が良いかもしれません。 >中田さん
それから、「コマンドまたはファイル名が違います.」と怒られていた
件ですが、ただ単純にレジストリに設定されていたPerl5のパスが
違っていただけでした。皆さんは c:\perl\bin にインストールして
いるのでしょうが、私の場合は d:\perl\bin にインストールしている
ので (^^;、PerlIS.dllがロードされなかったせいでした。
#インストールのとき d:\perl ってやったのにレジストリには反映
#されなかったらしい・・・。
吉田さん、
そうすると直接 URL で http://host/path/aaa.cgi とした場合、Win95ならいいけれども NT だと動作しない、ということですね(?)。
確認してみます。
いつもお世話になっております。返事が遅れてすいません。
しばらく出張に行っていたもので・・・・
>「ページが見つかりません。」はブラウザキャッシュの関係ということはありませんか?
ブラウザはキャッシュは関係ありません。
>(ないか。。。だとするととりあえずわかりません)
>.exe をダウンロードしてしまう場合は .exe? と '?' をつけてみてください。
exeの後ろに?をつけてもだめでした。
?を付けるとページが見つかりません。とでます。
ちなみにexec cmdを使ってCGIを動かしているのではなく
<a href="aaa.cgi">
や
<a href="bbb.exe">
の様にhrefを使用して実行しています。これって邪道ですか?
前回も書きましたがWindows95上のHTTPDでは拡張子がcgiでもexeでも
CGIが正しく実行されますが、NTだとだめです。
なぜでしょう? よろしくお願いします。
斎藤さん、
/bin/cat は Windows にはありません。DOS/Windowsにしいてあてはめれば、バイナリモードの TYPE です。
面倒ですが、$img を open して binmode で読み込み、(binmode で) print しないといけないと思います。
吉本さん、なおさん、
PerlIS.dll も Perl for Win32 付属の Perl300.dll を使うはずなので Build 315,316 のバグが原因なら PerlIS も同じだと思います。
ただ、むしかえすようで恐縮ですが、吉本さんの場合、 PerlIS.dll ではなくて perl.exe ではうまくいく、という話ではありませんでしたっけ?
だとするとちょっと熟睡するわけにはいかないのかも。。。?
O-ZONE さん、TigerCat さん、
たしかにプロクシでリクエストしたままになる可能性はあります。
TigerCat さんの言われる multipart の POST はその一例かもしれません。
具体的に心当たりがあるわけではないのですが、期待する応答をひたすら待つ部分はあるので。
調べてみます。
こんにちは。
また質問なんですけど、<IMG SRC="〜.cgi">としても、
該当するイメージが表示されなく×マークになります。
CGIの中身は、
$img = イメージのファイル名;
print "Content-type:image/gif\n\n";
print `/bin/cat $img`;
としています。
イメージのパスは通っています。
解決方法を教えてください。
おひさしぶりです。
Proxyがだんだん使えるようになってきたので、フル活用モードで
利用させていただいております。
たしかに、PROXY・キャッシュ設定で利用してますと、リクエスト
したまま帰って来ないことがあります。
multipart/form-dataのフォームをポストした時のような感じ
なんですが・・・要はファイルのアップロードとかの時。
心当たりはありませんでしょうか>中田様
Perl for Win32にPerlISは含まれませんね。失礼しました。m(_ _)m
PerlISは使ったことがなかったので使用の制限も良くわかって
いないような状況だったので、半ば怪情報になってしまいました。(^^;
renameのバグというのは確かのようで、Build310だと正常に動作
するとのことです。315と316はバグ含みで、それ意外のバージョン
はわかりません。
私の環境で貯めそうと思ったんですが、PerlISを使うようにしても
何故だか「コマンドまたはファイル名が違います.」と怒られて、
CGIが実行されず、試しようがありません(涙)なぜだろう?
多分、大した問題ではないんでしょうね。リブートしたら実行できる
ようになったりして(笑)
なおさん
情報ありがとうございます。やっと熟睡できる(^^;
手っ取り早いのは、Build下げることですね
中田さん、なおさん、
ホントにありがとうございました。スッキリ(^^)サッパリ
O-ZONE さん、
ポートはひとつしか設定できません。
したがって、HTTPサーバがポート80なら、ブラウザで指定するプロクシのポート番号を80とすればプロクシとしても動くはずです。
ポートの違うプロクシを使いたい場合は、もう一つ AN HTTPD を起動することになります。
その場合は、新たに httpd.exe のショートカットを作り、リンク先で C:\...\httpd.exe proxy のように何らかの名前(この場合"proxy")をつけてください。
エラーが出てもそのまま Options/General でポート番号を変え、再度起動すればプロクシ専用サーバとして動きます。
なおさん、吉本さん、
PerlIS の rename について、私が確認した PerlIS は Build 310 でした。
なお、PerlIS(ISAPI)では、外部コマンドはたぶん動作しないと思います。
中田さん始めまして。
「AN HTTP Server」をHP発信に使わせて頂いてます。
外からのアクセスで自分のPCが反応しているのを見ているとワクワクしますね。
こんなに楽しいソフトを手軽に扱える機会を作って頂いた事に本当に感謝しています!
楽しくなってくると欲が出てくるもので、HP発信中に他のPCから外のHPに
アクセスしたくなりました。
そこで質問なのですが、HTTPサーバを稼働中にPROXYサーバとしても動
作させる事は可能なのでしょうか?
仕様からすると可能なように思えるのですが、実際に使った場合に思うような
レスポンスが得られません。
(時々タスクトレイのアイコンが通信中マークのままで止まってしまいます。
フリーズしているのではないようです。)
私の設定ミスの可能性が大きいような気がするのですが、AN HTTP Server
側のポート設定は、HTTPサーバ機能とPROXYサーバ機能で分けて設定する
必要はないのでしょうか?
もしそうだとしたら、どのように設定すれば良いのでしょうか?
自分の勉強不足の所が大きいと思うのですが、お応え頂けたら幸いです。
吉本さん:
以前「Perl-Win32-J」というMLであがっていたのですが、
Perl for Win32 5.003 Build315 と 316に入っている
PerlISにはバグがあるようです。renameほかいくつかの
関数にバグがあり正常に動作しないとのことです。
私はやったことないけど、MS-DOSのコマンド rename を
使うってのはどうですか?(^^;
`rename $old $new`;
とか。(これだとドライブ C: も指定しないとだめかも)
智猫さん早速やってみますね(^^)
$old = "/usr/gold/cgi/TEST1/old";
$new = "/usr/gold/cgi/TEST1/new.dat";
stat("$old");
if (! -e _) {$msg = "ファイル $old がありません";&error;}
elsif(!rename($old,$new)){$msg = "エラー";&error;}
以下略。。で試してみたんですけどだめでした(泣)
やはりrenameの時に「エラー」になってしまいました
他のファイル操作は出来るのに。。何故だろう??
もう一度、何とか頑張ってみます。ありがとうございましたm(__)m
別のshtmlファイルから呼んだときは
?付きでもうまく逝くのでなんでかなー、と思って
最初のshtmlファイルをチェックしたらそっちの方が間違ってました。
はぅ、単なるタコミスでした(汗)。すみませぬ。確認不足でした。
いっつさん、
ちょっとやってみた限りでは、.cgi でもOKでした。
PerlIS(ISAPI)使用時の話でしょうか?
だとしたら、Location: や Cookie: の前に、print "HTTP/1.0 302 Found\n\n"; が必要になりますが。
でも、これはいっつさんはご存知でしょうし。。。
実際の Location: 以下をどう指定されているかお知らせ下さい。
dx さん、
どの程度安全か、というのには答えにくいです。100%安全とはいえない、というくらいでしょうか。。。
通常のアクセスでは、
Cドライブの中が全部見られてしまうわけではありません。ドキュメントルート以下しか読めません。
ドキュメントルートが C:\ ならば Cドライブ全部になってしまいますが。
もともとドキュメントルート以下は見てもらえなければ意味がないわけです。
ディレクトリリストの表示を許す設定にすれば(そこにindex.html がなければ)ファイルのリストも読まれます。
また、CGI/SSIを使った場合、いたずらされる可能性はありますが、普通は書き換えや消去はできないと思います。
ただし、HTTPサーバだけでなく FTPサーバ(ftpd)を立ち上げると危険性は増します。
一般論としてはWindows95 はサーバとしては非力なので HTTPサーバを通しての危険性は少ない、と私は思っています。
むしろ IPアドレスを公開することにより、MSIE のバグや Windows95 自体の弱点をつかれる方が心配だと。
でもやはり、公開用のドライブをCドライブでなく別ドライブにしておいた方が安心、というのが大方の納得を得られる線かもしれません。
DDP-SHK-Q.F さん、
#exec cgi= のあとは実際にはどうなっていますでしょうか?
.exe の指定がエイリアスを使うパスになっているかどうかが関係しているかもしれませんので。
そうだとしたらバグですが。。
実際に #exec cgi をどう記述されているかを(メールででも)お知らせ下さい。
吉本さん、
$old = "/usr/gold/cgi/TEST1/old";
$new = "/usr/gold/cgi/TEST1/new.dat";
でいけると思うのですが。
rename の前に、
stat("$old");
if (! -e _) {$msg = "ファイル $old がありません";&error;}
とかで確認した方がいいかもしれません。
えむけいさん、
Last-Modified はおっしゃるとおり ずれていました。
ファイルの更新日時のデータを GMT と勘違いして +9-9 になっていました。
逆に If-Modified-Since の解釈も間違っているかもしれないので、これを確認後、次版で直します。
なお、この件は、少し前に他の方からメールでもご指摘いただきました。
中田さん、名前の件は失礼しました。
ブラウザはネットスケープナビゲータ(NN4.05[en])を使用しています。
Location: をフルパスで指定してもダメでした。パス名をわざと間違えて、ファイルがないといわれることも確認しました。
"HTTP/1.0 200 OK"とかって文字列は出していません。
はじめまして。中田さん。
最近自宅サーバを公開したいな・・・と思っていますが
セキュリティの面はどの程度まで安全なのでしょうか。
なんだか公開すると自宅のPCのCドライブの中が
全部見られてしまうのでは・・・?という妙な不安が湧いたりするのですが
これは無知な者の錯覚でしょうか?
もしよろしかったら、これらの事項についてご返答お願いします。
つまらない質問だったかもしれません。ごめんなさい。
香吏さん、ここのFAQやAnHTTPD付属のreadme.htmlに書かれてあるとおりjcode.plを使用する場合はjperl.exeではなくperl.exeを使用する必要があります。
Option/GeneralのExecProg for .cgi,.plの設定部分をperl.exeにしてみてはどうでしょうか。
配布されてあるCGIスクリプトはほとんどperl.exeで動くと思います。
こんいちわ。お久しぶりデス(^^;;またまた質問します。とても困っています。
CGIでお馴染みだと思われるjcode.plなんですがこれがまたうまく動いてくれません。
はずすとjcodeではない所はきちんと動くいてくれるのですが。
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
tr : both end of - should be kanji at jcode.pl line 229.
次のようなエラーがでてしまいます。
何なのでしょうか?
ウィンドウズ95上では動かないのでしょうか?
ところでjcodeは普通にサブルーチンとして呼び出して使っているんですけど・・・(;;)
えっとですね、#exec cgiでも後ろに?以下がないときは
うまくいって?以下が付いているとダメなのです。
うーん、何だかなぁ・・・。わしの環境に関係あるのかなぁ?
中田様
お忙しい中、ご返事ありがとうごいます
>ソース側のファイルがない、というエラーなのではないでしょうか。
script produced no outputと言うエラーがでます(^^;
>rename の中身を絶対パスにしてみてください
と言うことで下記のようにしてみたのですが
PerlISにチェックを入れるとやはり、エラーになります
ドキュメントルートは(C:\usr\gold)です
ファイルまでは、(C:\usr\gold\cgi\Test1\old)です
パスを(C:/usr/gold/cgi/TEST1/)や(/usr/gold/cgi/TEST1/)
にして試してもみました
rename以外は、問題ないのですが。。
----------以下テストしたSCRIPT----------------
$old = "/cgi/TEST1/old";
$new = "/cgi/TEST1/new.dat";
if(!rename($old,$new)){$msg = "<H2>エラー</H2>";&error;}
$msg = "<H2>成功!</H2>";&error;
exit;
sub error{
print "Content-type: text/html\n\n";
print <<SUB_HTML;
<html><head><title></title></head>
<body bgcolor="#000000" text="#00FF00">
$msg
</BODY></HTML>
SUB_HTML
exit;
}
JavaScriptなどでlocalhostにあるHTMLの最終更新時刻を表示すると、file:で直接見た場合や
プロバイダへアップロードした場合に比べてタイムスタンプが 9時間ずれます。
telnetでヘッダを覗いてみると、GMTと入っているにもかかわらず実際にはJSTの最終更新時刻を
返しているようです。
私の環境だけでしょうか? タイムゾーンの設定はちゃんとやっているはずなのですが……。
DDP-SHK-Q.F さん
そうですね。.shtml? だとその .shtml全体共通になります。
拡張子 .exe の #exec cgi が動作しない、ということだと思っていいですか?
>.exe を /cgi-bin に置いて、
><!--#exec cgi="/cgi-bin/abcd.exe?xyz"--> はどうでしょうか?
ということで、やってみましたがダメでした。
やはりコマンドまたは(以下略)となります。
.shtmlに?を付けると逝けるので今のところいいのですが
やはりその方法だと.shtmlに複数のSSIがあると
全部同じQUERY_STRINGを受けるんですよね!?
うーーーーん。にゅ。
いっつさん、
ブラウザはなんでしょうか?
Location: で http://... と指定してもだめですか?
"HTTP/1.0 200 OK" とかのステータスを CGI で出したりしていませんか?
#なお、私は「中田」で、「田中」ではありません。
#ただ、「中田です」と言うと「はい、わかりました田中さん」という会話はままありがちなのですが。
えむけいさん
了解しました。考えてみます。
(田中さん)
はい。CGIでLocation:を出す場合の話です。
で、.cgi を指定すると以下の表示が出ます。
Error 302
Redirection
This document can be found elsewhere.
You see this Message because your browser doesn't support automatic redirection handling.
------------------------------------------------------------------------------------------
AnWeb/0.9b8
「elsewhere」にリンクが張ってあって、そこをクリックすると表示させたかったcgiが表示されます。
>えむけいさん、
>ホスト名については、hostsファイルの別名で指定すればいいような気もしますが。(。。だめかも?)
たとえば、複数のISPと契約していて両方にページを持っている場合、リンクのさせかたに困ります。
無理にとは申しませんが、あまり難しくないようでしたらお願いしたいと思います。
吉田さん、
どうも。
「ページが見つかりません。」はブラウザキャッシュの関係ということはありませんか?(ないか。。。だとするととりあえずわかりません)
.exe をダウンロードしてしまう場合は .exe? と '?' をつけてみてください。
かすいさん
了解しました。
が、except POST にしてもああなるのはまずいかもしれません。
えむけいさん、
ホスト名については、hostsファイルの別名で指定すればいいような気もしますが。(。。だめかも?)
ちょっと実現方法は考えてみることにします。
RASAPI32.DLL がない、つまりダイヤルアップ接続はしない環境でそこを無事通過させるにはどうしたらいいか、という話で
あったわけですが、おっしゃるように LoadLibrary/GetProcAddress でいけそうです。
DDP-SHK-Q.F さん、
.exe を /cgi-bin に置いて、
<!--#exec cgi="/cgi-bin/abcd.exe?xyz"--> はどうでしょうか?
Mints さん、
Options/General の Aliases の方で /cgi-bin を含むエイリアスの設定はしていないでしょうか?
Options/General の方が優先されるはずなのですが。。。
「起動されない」というのは、どういうエラーになるのでしょうか?
こんにちは。
吉田です。
一つ教えて下さい。
Cで作成したexeファイルを拡張子をcgiに変更して、cgiを実行しようとすると
Windows95で起動しているANHttpd(0.9b8)上だと正しく実行されるのですが、
NT4.0で起動しているANHttpd(0.9b9)だと「ページが見つかりません。」といわれてしまい
ます。(当然指定ディレクトリは正しいですよ。)
あと、exeのままだとファイルのダウンロードが始まり、そのまま実行するとDOS窓が開いて
しまいます。(NTの場合。95は試していません。)
どうしてでしょうか?
すいませんが、よろしくお願いします。
中田さん、重ね重ね、すみません〜……あぁ。(T-T)
1998/06/10 05:21 の2件、結局、どちらも、こちらの
勘違いでした。
この間まで大丈夫だったのにと……どうにも腑に落ちない
日々の中……ふっと、オプション設定をよ〜く見てみたら、
「Except POST」がチェックしてありました……。
どおりで、POSTの時だけ、DOSプロセスが起動するわけです。
今朝、やっと、負荷や呼び出し数やタイミングなんかとは
全く関係なしにPOSTした時に変だなーということに気づいて、
すぐさま、Except POSTのことを思い出したんです。
ほんと、お手数おかけしました……。
>ただ RASAPI32.DLL がインストールされていない環境での処理がまだわかっていませんが、まあなんとかなるでしょう。
ヘルプの説明はなんだか謎ですが、ようするに「インポートライブラリでリンクするとDLLがないとき起動もできなく
なるから、LoadLibrary/GetProcAddressを使ったほうがいいよ」って意味だと思います。
でもダイヤルアップでインターネット接続できて RASAPI32.DLL のない環境というのがちょっと想像できないです。
>HTTPヘッダなしのファイルの扱いですが、これは HTTPサーバそのものになってしまいませんか?
>プロクシ/キャッシュでやった方がいい理由がちょっとわかりません。。。が、面白いかもしれませんね。
ふつうのHTTPサーバだと、"http://……"とプロトコル名からの絶対パスでURLを書いている場合、
オフラインで動作確認できないのです。
proxyならプロトコル/ドメイン名も含めて任意の場所にリソースがあるかのように振る舞えます。
キャッシュと同じフォルダを使うことにはとくにこだわりません。よく考えたらこれからアップロード
するファイルを勝手に消されたら困りそうですし。
あ、すみません。
SSIを入れる<!--・・・という部分をそのまま書いてしまったので
続きが消えてしまいました。
で、前の書き込みは↓を書いたつもりでした。
えーと、abcd.shtml?xyzというやり方はうまく逝きましたが、
<!--#exec cgi="abcd.cgi?xyz"-->というやり方はうまく逝きません。
あ、一応Cで書いてるので拡張子はexeですが。
コマンドまたはファイル名が違うといわれます。
えーと、abcd.shtml?xyzというやり方はうまく逝きましたが、
すばやいお返事、ありがとうございます。
>[/cgi-bin/cgiwarp/~mint ] -> DocRoot\[.... ]
>とするのではうまくいきませんか?
optionで、cgiの仮想ディレクトリとして/cgi-bin/cgiwarp/~mintを指定し、
ローカルパスとして\cgi-binを指定しておいた後、
URLで/cgi-bin/cgiwarp/~mint/test.cgiを指定しても、
\cgi-bin\test.cgiが起動されないようです。
仮想ディレクトリを/cgi-binや/cgi-testにすればうまくいくのですが。
Mints さん、
Options/General の
[/cgi-bin ] -> DocRoot\[.... ]
のところを
[/cgi-bin/cgiwarp/~mint ] -> DocRoot\[.... ]
とするのではうまくいきませんか?
ただし、/cgi-bin/cgiwarp/~mint というのが、URLで指定する仮想パスなら、ということですが。
話の感じから言うと、スクリプトの中で指定するローカルパスではないのかな、という気もしますが。。。
PIN さん、
hex2bin.exe のことなら、ソースは C で、
標準入力を読み込み、'+' はスペースに戻し %NN を もとの 8bit文字 に戻して 標準出力に書き出しています。
同じようなことを Perl で書くなら cgi-lib.pl の &ReadParse の中を見てみてください。
たかこさん、
ブラウザのプロクシの設定は、プロクシサーバを使う環境なら、プロクシサーバのアドレスとポート番号を指定します。
ブラウザのキャッシュの設定は、通常、デフォルトのままで特に変更する必要はないのではないかと思います。
と、これではご質問の意味と違うようなら、再度おたずね下さい。
えむけいさん、
HTTPヘッダなしのファイルの扱いですが、これは HTTPサーバそのものになってしまいませんか?
プロクシ/キャッシュでやった方がいい理由がちょっとわかりません。。。が、面白いかもしれませんね。
RasEnumConnections、どうもありがとうございます。早速取り入れてやってみます。
ただ RASAPI32.DLL がインストールされていない環境での処理がまだわかっていませんが、まあなんとかなるでしょう。
DDP-SHK-Q.F さん、
ひとつには abcd.shtml?xyz で、QUERY_STRING に xyz が入ります。
他には、<!--#exec cgi="abcd.cgi?xyz"--> でも入るはずです。
いっつさんへ追伸。
それから、NTのサービスでのバージョンは、確かにサービスを止めて Help で見ないとわかりませんね。
表示させる方法を考えます。
いっつさん、
CGI で Location: を出す場合の話ですよね。
URLなら何でもいいはずなので拡張子は何でも大丈夫のはずです。Error 302 というと、どんな風な表示ですか?
ISAPI(PerlIS)での話でしょうか?
すだすだこさん、
普通は autoexec.bat で大丈夫だと思いますが、だめな場合もあります。
だめなら状況をお知らせいただければ。
WIN95+WEB+CGI+Perl環境を探してここにたどり着きました。
早速ダウンロードして、使わさせていただいでいます。
おかげざまで、スタンドアロンでCGIのテストができ、
ホント、電話代が助かっておりますよ。(喜)
ひとつ質問があります。
CGIの仮想ディレクトリのエイリアスが標準で/cgi-binとなっていますが、
これを、/cgi-bin/cgiwarp/~mintみたいに修正できますか?
うちのサーバは、/cgi-binのディレクトリを呼び出すとき、上記のようなパスを
指定しないとCGIを起動できないんですよ。
できれば、スタンドアロンのテストも同様にシミュレートしたいと考えております。
自分で指定してみたところ、/cgi-bin以降のパスは、無視されるようですが・・・。
いつもお世話になっています。
cgisample.htmlのソースを見たら、input4.bat ファイルの内容に.exeファイルが含まれて
いました。
これは、perlでプログラムされたものですか?
(似た機能のプログラムを作るために、参考にさせてもらおうと思ったのですが・・・。)
初心者です。
ブラウザ側のプロクシ&キャッシュの設定は
どのようにしたら良いのでしょうか?
あまりに初歩的な質問ですみません
対応していただけるようでありがとうございます。
ブラウザに依存しないキャッシュ管理ができるのがすごく嬉しいです。
httpヘッダのないファイルがキャッシュにあった場合、ヘッダをデッチ上げて返してくれたりすると、
オフラインで実際のURLと同じ位置にファイルを置いて試せるので、ますますありがたいのですが、
どうでしょうか?
オフラインの判定方法ですが、RasEnumConnectionsで接続が1つも見つからなかったらオフラインと
みなす、というのがいちばん高速だと思います。
あのぉ、しょうもない質問ですみませぬが、
SSIでQUERY_STRINGを渡すにはどうしたらいいのでしょうか。
「GETメソッドで shtml ファイルが呼ばれた時だけ」と書いてありますが
イマイチ意味が分かりませぬ。
バージョンは、0.9 beta 8 を使用しています。
Location ヘッダで、*.cgi を指定することはできないのでしょうか。
*.html だと表示されるのですが、*.cgi では、Error 302 がでます。
それとは別件で、NTでサービスとして動作させているときにバージョンを知るにはどうすればよいのでしょうか。
右クリックのメニューにバージョン表示があると良いのですが。
本当にありがとうございます。
autoexec.batは、最後とありましたが、
SET PATHという設定の最後でしょうか?
それとも、ホントにほんとのおしりでいいのでしょうか?
これ、ちょっと悩んでました。余裕が出てきたらやってみたいと
思います。
すだすだこさん、
よかったですね。
余裕ができたら、autoexec.bat で、
PATH=%PATH%;C:\www\perl\bin
として再起動し、ExecProg. for .pl, .cgi の指定を単に perl としてやってみてください。
それでも動作するはずですので(ひょっとするとうまくいかないかもしれませんが)。
中脇さん、
秋山さんの説明の通りですが、Perl for Win32 の flock は WindowsNT では動作するはずです、ということだけ補足しておきます。
なお、flock が Windows95 で動かないのは、 Windows95システムのせいであって、Perl や AN HTTPD の責任ではありませんので念のため。
Kobaさん
そうですね。
Last-Modified を返す通常の HTMLや画像などでは、 CacheExpiryCheck をはずすか CacheLastModifiedFactor を大きくするかすれば 大体 Cache Only と同じような感じで動作し、強制リロードの時のみ更新するはずです。
しかし、CGIの出力や SSIを含むページは Last-Modified はないのが普通なのでちょっと判断しようがありません。 CacheDefaultExpiry を大きくすればその期間内は必ずキャッシュを使いますが、逆に好きな時に更新できませんし。
ダイヤルアップ環境では、ダイヤルアップが切れたら Cache Only になるというのがいいのでしょうが、時間のロスなくダイヤルアップ接続の有無を判定するいい方法がわからないでいます。
というわけで、懸案ですね。
また、? 付きの CGI や POSTメソッドの CGI はキャッシュしません。
データが(場合によっては大量に)つくのでどうしたものか、と。
ご指南どうも有り難うございます。
指示の通りにCGIスクリプトからflockを削除すると動作するようになりました。
どうもお手数をおかけしました。これからもよろしくお願いします。
中脇さん、
flockはwindows用のperlでは使えないのでその部分を削除しなくてはいけません。
flock()という命令はそのファイルを他のプロセスからオープンできなくさせる為の
もので、AnhTTPDではCGIの挙動をsingleとすることで回避できたと記憶しています。
ありがとうございます!でましたあ!テストcぎ
感動です、エラー500がでないというのは、こんなにうれしい物か!
とうるうる。
結局、最終的にチェックしたら、なんてことはありません、
ご指摘のあった「perl」のミススペルでした。>しかも、フォルダの。
この掲示板に依然同じ質問をなさっていた、めいさんにも
お世話になりました。本当にどうもありがとう。掲示板書き込みについての
早い対応に超初心者でもやってやるー絶対がんばる!という気にさせて
くれるので、めげずにできました。3日で設置完了は、純文系の
しかも夫の手助け無しということをふまえれば、なかなか、自分自身では
できのいいほうだとおもいます。ご丁寧なご指示ありがとうございました。
まずはなんとか動くようになったおしらせまで。
はじめまして、
CGIの勉強を始めたので、動作試験のために利用させて頂こうとインストールしました。
初めは既存のソースをいじるところからと、「minibbs.cgi」と「EASY投票」をテストしてみました。すると、minibbs.cgiは問題なく動作するのですが、「EASY投票」が動作しません。
画面に「flock() is not available on Win95!」と表示されてしまいます。
一体これはどういうことなのでしょうか? お手数ですがよろしくお願いします。
こんばんは。
プロクシ+キャッシュを使ってみました。
間違って閉じたページを再度開く場合などに待ち時間が短くなっていい感じです。
どうせならば普段はcache onlyにしておいて、気が向いた時にキャッシュ内容を更新
するというような使い方をしたいのですが何かいい方法は無いでしょうか?
#リロードを3回連続で行うとか?
あと、
bbs等のCGIページで、http://・・・/bbs/index.html?num=1134&ope=v&page=&id=
といった感じのアドレスはキャッシュしないのでしょうか?
えむけいさんへ補足。
下に書いたとおり、%7E(%7e)などは '~' の方に統一しようと思っています。
そのままの表記の方が見やすいでしょうし、'~',' 'などは Windowsシステムでは問題にならないでしょうから。
その他の%NNで問題が出る文字があるのかどうか自信はありませんが。。。
すだすだこさん、
とりあえず、ExecProg. for .pl, .cgi の欄は、
C:/www/peal/bin/peal.exe
ではなくて、
C:\www\perl\bin\perl.exe
と指定してください。(peal は perl のタイプミスだとして)
つまり、そこの指定は '/' ではなくて '\' を使ってください。
このように C: から始まるフルパスの指定をした場合は PATH の設定は関係なくなります。
KMさん
Options/Proxy の Pass ftp は、
ftp のプロクシとして働かせるかどうかを指定するものなので、ftpサーバにはなりません。
ブラウザのプロクシサーバの指定のところには、 HTTP のプロクシサーバとか FTP のプロクシサーバとかありますよね?
その FTPのプロクシサーバになるということです。
ゆういちさん、
これは文字通り、指定されたファイルがみつからない、ということなので
(1)拡張子が本当に .cgi になっているか( .cgi.txtなどとなっていないか)、
(2)ファイル名に全角文字が混ざっていないか、
(3)ファイル名に余計なスペースがはいっていないか、
などを確認してみてください。
ファイル名に間違いがなさそうなら、
(1)CGI を動かそうとしたときの URL をどう指定しているか(http://以下)
(2)CGI を置いてあるフォルダ名
(3)CGI のファイル名
をお知らせ下さい。
えむけいさん、
はい、そうですね。
あと気になるのは ' '(スペース)くらいでしょうが、%NN はすべてデコードしてキャッシュするようにします。
ここは、どうしようか、と思いつつそのままにしていたところです。指摘されてしまいましたね。
DDP-SHK-Q.F さん、
確かに不思議ですね。
なお、? をつける必要があるのは、GET メソッドで かつ /cgi-bin 以下ではない 時です。
こんにちわ。ためしてみましたが、やっぱりだめです。
index.htmlはちゃんと表示されますが、cgiだと、どうもだめです。
次のようなエラーがまたでました。
現在の設定は次の通りです
-------------------
hello.cgiを起動させると
次のようなエラーがでる。
Error 500
CGI Error - can't exec "C:/www/peal/bin/peal.exe c:\www\sudako\public_html\hello.cgi ", errorcode = 2, No such file or directory
設定 リムーバブルディスクからの解凍
ディレクトリはc:/www/peal/bin/peal.exe
にはなっている。
autoexec.batは、かきこまれなかったので、
次のようにかきいれた。
------------------
autoexec.batファイル
ECHO OFF
SET MWPATH=C:\MWW\DLL;C:\MWW\MWGAMES;C:\MWW\DSP;
REM 次の SET 行は、DOS のゲームが Sound Blaster アダプタ設定を知るために・・(中略)
SET WTIMAGES=c:\temp\temp
SET WTMODELS=c:\temp\temp
SET WTKDMAXTEXSIZE=128
PATH=%PATH%;C:\Perl\bin←書き入れた部分
これで、public.htmlのなかの、index.htmlはでてくるのだけれど
CGIになると、でてこない。
--------
ほかに何か原因はありますか?
半分できて半分できない、歯がゆい思いしています。くやしいです(泣)
Proxy/Gatewayの設定で、Passのチェックボックスがありますよね?。
ここでftpをチェックすると、どうなりますでしょうか?。
いろいろ試したのですが、ftpサーバとして利用出来る訳ではないのですよね?。
初心者なので、よく判りません...。^_^;
どなたか、御教授願います。
こんばんは。HPを開設しようとしている初心者です。
掲示板を自分で作ろうと思い、参考にしようと回っていたところ、
オフラインでCGIをテストできる事が出来る、ソフトの存在を知りました。
初めてなので、いろいろとテストしようと思い、「httpd098」と
「Pw32i316」を、ダウンロードしてきて、「A\www」というフォルダに、
格納しました。indexのページは、きちんと表示されますが、
cgiを表示しようとすると、下のようなエラーが出ます。
Error 404
Not found - can't find cgi script or executable
これはどうすれば改善されますでしょうか?できれば初心者なので、
わかりやすく教えていただければありがたいのですが・・・。
お手数だとは思いますが、よろしくお願いします。
キャッシュでは「~」と「%7E」を同一視してください!
二重にキャッシュされてしまって困ります。
RFC的にも同一視するのが正しいはずです。
ぜひぜひお願いいたします。
今日今一度試してみたら、今度はダウンロードしようとするので
readme.htmlのどこだかに書いてあったのを思い出して
ファイル名の後ろに?を付けたらうまく逝きました。うーん、謎。(ぉ
一応、cgi-binのAliasも付けているのですが。
まぁ、取り敢えず動いたのでありがとうございました。
ありがとうございます。
とりあえず、やってみます。
また、トライした結果をおしらせしたいとおもっています。
早いお答え本当にどうもありがとうございます。
すだすだこ さん、
このページの少し下にある、
>中田昭雄 nakata@st.rim.or.jp 1998/06/07 17:09
>
>C:\www\perl\bin に perl.exe はありますよね?
>だとしたら、とりあえず ExecProg. for .pl, .cgi のところを 単に perl ではなく、C:\www\perl\bin\perl.exe としてください。
>もし、perl.exe が違うところにあるなら、それなりに変えてください。
でいけるかと思います。
DDP-SHK-Q.F さん
だとすると、ちょっと原因はわかりません。
.exe のフルパス, 動かす時の URL, DucumentRoot, Alias指定(もしあれば) などを教えてくれますか?
(メールでもいいですが)
↓のコメントの関係は、解決しました(接続治してませんでした。IEの)
でもって、oidonさんの、hello.cgiの件でしたのFAQにもあったのですが
私もエラー500とでますが、コメントがちょっと違うのでその件について
お伺いしたいです
Error 500
CGI Error - can't exec "perl c:\www\sudako\public_html\hello.cgi ", errorcode = 2, No such file or directory
となっております。
hello.cgiは
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<H2>Hello! WORLD</H2>\n";
としております。うちのcgiサイトのそのままの
#!/usr/local/bin/perlです。
おそれいります。このたびPERLを勉強しようと思って
こちらのサイトをおしえてもらったのですが、うまくできません
C:\wwwというなかに、httpdのフォルダを作って
自分のsudakoというフォルダの中にpublic_html
をつくり、index.htmlを作って入れてみた物の、
http://127.0.01/~sudako で、index.htmlが
でてきません。依然、家庭内LANのために、このhttpdを
つかっていて、そのフォルダがまだのこっています。
このせいでしょうか?設定はちゃんとしたつもりですが
ほかにまだ、だめなことがあるのでしょうか?
一回以前のフォルダを削除した方が無難でしょうか?
全く違うディレクトリにあります。
to : 中田さん
>AnHTTPd が認識するのがローカルのIP(192.168.1.2)でも、ダイヤルアップのIPアドレスも有効です。
申し訳ありません。
サーバに素IPしかないので、てっきり繋がらないものと思って試してませんでした。
使ってみたら快適に動いてます。
すいませんでした。
ということで、一応念の為に調べてみましたが
スペースが入ってるようなことはありませんでした。
(個人的にファイル名やディレクトリ名に空白が入ったり
数字で始まったりするのは嫌いなんですが)
まさか、_がダメなんてことはないでしょうし?
拡張子はexeにしてもcgiにしても結果は全くもって同じでした。
To:中田様
>スクリプトの編集には何をお使いでしょうか?
>改行コードを変えられるものであれば 改行コードは CR+LF にしてください。
コメントありがとうございました。
遅れてごめんなさい。
エディタは、Windows95/NT用の 「ViVi」です。
おっしゃるとおりに改行コードを変えましたらちゃんと動きました。
自分のCGIスクリプト(初歩)が動いて感激しました。
いままで、一行目の #! /usr/bin/local/perl も消さないと動きませんでしたけど、
今ではちゃんと動くようになりました。
(「Error 500 CGI Error - size of stdout is NULL」がでていたのですが、
今ではちゃんと動きました。)
ありがとうございました。失礼します。
桜文鳥さん、
AnHTTPd が認識するのがローカルのIP(192.168.1.2)でも、ダイヤルアップのIPアドレスも有効です。
つまり、ダイヤルアップのIPアドレスでアクセスしてもAnHTTPdはちゃんと応答するはずです。
したがって、特にダイヤルアップのIPを割り振る必要はありません。
DDP-SHK-Q.F さん、
拡張子が .exe で、コマンドまたはファイル名が違います、というエラーだとしたら、
そのファイルのフルパスの中に 空白(スペース)が含まれているのではないかと思います。
はじめまして、最近ダウンロードして使わせて頂いている初心者なのですが・・・
早速質問です。
家庭内LAN1号(NIC設定192.168.1.1)と2号(NIC設定192.168.1.2)の2号機に ANHTTPを入れて
使わせていただいてるんですが、ダイヤルアップ側のIPアドレスにならなくて困っています。
(常に192.168.1.2なんです(泣)、)
なんとかダイヤルアップで割り振られたIPにする方法は無いでしょうか?
ご教授よろしくおねがいします。
取り敢えず、cgiのテスト用に落としました。
で、いきなりですがcgiテストしようとすると
コマンドまたはファイルが違うとかいわれます。
普通に動かすと(プログラムを)ちゃんと出るのですが・・・。
因みにCでつくりましたが(コンパイルはVC++だけど)、何故でしょうか。
えせばんくるさんへ補足。
会社のLANで、となるとおそらく各ブラウザはプロクシを使う設定になっているのでしょう。
AnHTTPD へのアドレスを「プロクシを使用しない」アドレスの中に入れておかないといけない、という話かもしれませんね。
だとしたら、AnHTTPDをプロクシにする必要はなくなりますが。。。
has さん、
そのエラーは、CGI(hello.cgi)が何も出力していない、というエラーです。
MS-DOSプロンプトで hello.cgi があるディレクトリ上で
> perl hello.cgi
または
> jperl hello.cgi
としても何も出てこないのではないかと思いますが、そんなことはありませんか?
Content-type: text/html とか出てくるのが正常です。
それが出てこないとしたら、hello.cgi の中身の問題だろうと思います。
(これがちゃんと出てくるとなると、ちょっとわかりません。NTでしょうか?)
えせばんくるさん、
LAN上の他からアクセスできない、というのがどういう状況かちょっとわかりません。
他からアクセスするとどうなるのでしょうか? また、そのときに URL(特にアドレス) はどう指定していますか?
プロクシの話なのかどうかさだかではありませんが、一応説明しておきますね。
AnHTTPD はデフォルトでhttpのプロクシサーバとして動作するはずなので、
ブラウザ側を、プロクシを使用する設定にすれば使えるはずです。
つまり、ブラウザ側の設定で、プロクシ(AnHTTPD)が動いているPCのIPアドレスとAnHTTPDのポート番号を指定します。
よりそれらしくするには
(1)Options-General のポート番号を 8080 などにする。
(2)Options-Proxy/Cache で、ftp もチェックする。http はチェックされているはずです。
プロクシサーバのポートを変えたら、もちろんブラウザ側のプロクシサーバのポート番号をそれにする必要があります。
ブラウザが現在既にプロクシを使う設定になっている場合は、
そこで指定しているアドレスとポート番号を Options-Proxy/Cacheの External Proxy のところに入れてください。
そして、ブラウザの方はプロクシサーバの指定を AnHTTPDのアドレスとポート番号にします。
こんにちは
中田さんのすばらしいものを
つかわせていただいております
さて、質問なのですが
会社のパソコンでたちあげているのですが
oidonさんのhello.cgiを実行したとき
Error 500
CGI Error-size of stdout is NULL
というのがでました
これはどういうことでしょうか
おしえてください
AnHTTPDをVer0.9b8eにしたらAliasの設定が出来るようになりました。
回答ありがとうございました。
はじめまして
最近ダウンロードして、使わせてもらってます。
今日聞きたいことは、proxyとして使う方法です。
マニュアルを見ると、そのように使えるようなことが書いて
あったのですが、方法が分かりません。
現在の状況は、インストールしてあるパソコンからは、
アクセスできるんですが、LAN上の他のパソコンからアクセスできません。
どうかよろしくお願いします。
またまた、すみません……。(T-T)
ブラウザの履歴を調べたら、どういうわけか間違ったファイル名を
指定していたみたいです、*.cgiでも、PATH_INFOできました。
ほんと、お手数おかけしました。
どうも m( )m 早速のご返答、重ね重ね有り難う御座いました m( )m
なんとか、なったみたいです(^^;)フリーチャットソフト動きました
・・・(^^;)パーミッションが常に777状態なのですね・・・勉強になりました
では、また何かとお世話になるかもしれませんが、以後も宜しくお願い致します m( )m
MixMizuka さん、
前に一度試みてうまくいかなかった部分なので、ご期待に添えるかどうかは自信ありません。
つまり、結構手間取るのではないかと思っています。
えむけいさん、
これは RFC1945(HTTP/1.0),RFC2068(HTTP/1.1) に従っていない項目のうちの一つで、準拠させようと思っています。
もしこれが原因でうまく動かないということでもあれば、組み込む優先度をあげなきゃいけませんが。。。
かすいさん、
了解です。
.cgi でも PATH_INFO はセットされるはずですが、だめですか?
y2さん、
Win95ではパーミッションの設定はできませんから、不要です。
ファイルのパーミッションというものがないので、 Win95上で動くFTPサーバでは SITE CHMOD は実装できません。
(書き込みの可不可くらいはできるんでしょうが。。。)
Win95では、実行できるファイルかどうかは拡張子をどうするかで決まります。つまり、実行できるファイルは拡張子 .exe, .bat などです。
AN HTTPD では、見かけ上 .pl, .cgi も実行可能であるかのように扱いますが、いずれにしろ拡張子で判断します。
したがって拡張子を上のいずれかにしておけばそれで実行権は与えられている、と考えていいと思います。
回答ありがとうございます。
すばやい対応を期待しております。
以上!
RFC1945によれば、「Location:」ヘッダには「http://」の部分から入っていなくては
ならないはずですが、入っていないようです。
中田さん、コメントありがとうございます。
えっと、何を思ったか、「DOCUMENT_」付きの方を書いてました。(^^;;
で、「PATH_INFO」の方で良いのですが……ただ、これだと、*.plでないと
効かないみたいというのに、先程、気が付きました。(^^;;
うちでは、特にテスト目的などにちょっと動かすものでない限り、*.cgiに
統一しているので対応されてないものと思い込んでいまいした、すみません。
はじめまして・・・「AN HTTP Server」を知ってから、自宅開局目指して頑張ってます!
ほんと、このHP参考になりました m( )m 多謝、多謝!
で・・・質問なんですけど(^^;)・・・
FTPソフト(私はWS_FTPを使用してます)てパーミッション設定をしたいんですが・・・
なかなかうまくいかないんですぅ(T-T)エラーがでて・・・・
接続でのエラーは・・・
connecting to 192.168.1.1 ...
! Can't connect to 192.168.1.1 - connection refused
! Connection to 192.167.1.1 failed
って出るんですけど・・・どういう意味なんでしょうか?
さらに、他のFTPサーバソフト(TinyFTP)立ち上げて繋ぐと繋がるんですけど・・・
今度はパーミッション設定ができないんです(T-T)
エラーがでて・・・UNIXホストタイプじゃないとできないんですか?(私はWin95です)
SITE chmod 666 chat.txt
200 Error SITE CHMOD not implemented
って出て・・・実行権が与えれません(T-T)
どうしたらいいんでしょうか?ドナタか解決策をお願い致します m( )m
斎藤さん、
# 以下が無視される、となると、改行コードが DOS/Windows の改行コード(CR+LF)になっていないのかもしれません。
スクリプトの編集には何をお使いでしょうか?
改行コードを変えられるものであれば 改行コードは CR+LF にしてください。
MixMizuka さん、
これはNTの話ですよね? Win95 ではこれは発生しないはずです。
どこかにちゃんと書いておくべきなのですが、NTでは現状ではこうなってしまいます。
回避するには、引数(ARGV)からではなく QUERY_STRING から取り出してください。
ARGV はカットされてしまいますが、QUERY_STRING には最後まで入っているはずです。
原因は、標準入出力の関係で cmd.exe ではなく command.com を使っているためです。
NTの command.com はコマンドラインの長さが80バイトに制限されているようで、やむなく引数はカットしています。
?以下を QUERY_STRING に入れるのは CGI の仕様のようなので、こちらには全部入るようにしています。
NTの command.com はロングファイルネームも扱えないようなので、cmd.exe に替えることを考えてはいますが、まだできていません。
とりあえずは QUERY_STRING で しのいで下さい。
かすいさん、
応答待ちのときにリロードだとたしかに変なことがおきるかもしれません。
ISAPIで DOSプロセスを呼ぶように意識はしていません。
まだやってみていませんが、確認して、対応します。
PATH_INFO や PATH_TRANSLATED には対応しているはずですが、 DOCUMENT_PATH_INFO は入れていません。
もちろん入れるのはいいのですが、まだ、PATH_INFO との違いがわかっていなかったりします。。。
Kobaさん、
Aliases は、AnHTTPDのオプションで設定します。
Options/General で、2番目のタブ Aliases を選び、
Add で、Virtual Path を /www として Local Path を F:\ とすれば設定できます。
はじめまして。
CGI初心者です。
ついこの間からダウンロードして使わせてもらっています。
四苦八苦し、何とか動くに動くのですが、
CGIスクリプト中の#でコメントアウトすると、
そこからすべてのスクリプトが実行されなくなります。
何か対処法がございましたら教えてください。
よろしくお願いします。
はじめまして、いつもAN HTTPをつかわせてせていただいております。
ところで、CGIスクリプトを使ったHPのテストを行おうと思ったのですが、
HTML上からCGIへの引数を指定したときに、引数が長いとエラーに成ってしまうようです。
=============エラーログはこんな感じ==========
Wed Jun 10 15:51:16 1998 Warning: cmd is truncated to " E:\html\~naruhiro\pnb\pnblist1.cgi 2,,,,,,35,darkslategray,linen,mediumspringgre"
Wed Jun 10 15:51:49 1998 Warning: cmd is truncated to " E:\html\~naruhiro\pnb\listadd.cgi 1,0,0,0,0,0,0,darkslategray,linen,mediumspring"
Wed Jun 10 15:52:04 1998 Warning: cmd is truncated to " E:\html\~naruhiro\pnb\msg.cgi 1,0,0,0,0,0,0,darkslategray,linen,mediumspringgree"
============================================
これって、どうしようもないのでしょうか?
HTML上では
========
ACTION="pnblist1.cgi?2,,,,,,35,darkslategray,linen,mediumspringgreen,cadetblue,gold
========
というような感じで
呼び出しています。
どうやら80文字(パスを含めて)までエラーメッセージで表示されているようですが、内部でもそういう風に扱っているのですか?
なを、プロバイダに接続してテストしたときにはうまく動いております。
なにか設定などで回避できるのであればおしえてくださ。
中田さん、みなさん、こんにちわ。(^^)
えっと、クライアントプルのテストをしていて、妙なことに
遭遇しました。
AnHTTPdの動作も見ようと、ウィンドウを表示させて眺めて
いたのですが……ISAPIを有効にしているにもかかわらず、
DOSプロセスが起動してしまうことがあったのです。(^^;;
しばらく、いろいろ試したのですが、どうにも、原因らしい
ことは分かりませんでした……。
ですが、わりと簡単なスクリプトで再現することが出来ました
ので試していただけないでしょうか。
・test.cgi
再現するためとはいえ、10秒スリープしながら延々とリロード
し続ける邪悪なスクリプトです。
なので、なるだけ他のアプリは終了させておいて、未保存のデータ
はきちんと保存してから実行した方が身のためだと思います。
間違っても興味本位で実行しない方が良いです……中断した際に
DOSプロセスをうまく終了できなかったりすると(?)ハングや
異常の原因になるみたいですので。(^^;;
で、再現の方法ですが、応答待ちの時にリロードボタンを押し
ます……すると、ひょっこり、DOSプロセスが。(^^;;
ちなみに、うちの環境は、i486-100MHz/16M/Win95/AnHttpd
0.9beta8eです。
あと、Single Threadのチェックの有無関係なしに起こりました。
そして、クライアントプルのみ複数稼動させても、誤動作?しま
せんでした。あと、GETでも問題無く、POSTのみの症状のようです。
さもなくば、マシンパワーが足らないか、(ISAPIのことは分かり
ませんが)ISAPIがリクエストを受け入れてくれなかったりとか、
そういう場合にDOSプロセスを呼ばれるように組まれているのかな
……と想像はしていますが、どうなのでしょう?(^^;;
-------
話変わってて、環境変数「DOCUMENT_PATH_INFO」には対応され
ていませんよね?
もし、余裕がありましたら……対応していただきたいのですが。(^^;;
別に無いならないでも良い機能なのですが、
・http://localhost/test.cgi/test
なんてすると、なんにも出てこないので……。(^^;;
ご教示ありがとうございます。
httpdを2つ起動するのは思いつきませんでした。
ただ動作が重くなりそうなので(2)の方法にしたいと思うのですが、
ディレクトリのAliases設定方法が分かりません。
(いろいろやってみたのですが...AnHTTPDの設定じゃないですよね?)
出来れば教えていただけないでしょうか?よろしくお願いします。
Kobaさん、
CD-Rなどの別ドライブを 同時に ドキュメントルートに設定することは(現在のところ)できません。
似たようなことをやるとすれば、2通り考えられます。
(1)ポート番号を80以外(たとえば8080)にして httpd をもうひとつ起動する。その2つ目の httpd のドキュメントルートを CD-Rドライブにする。
(2)ディレクトリのエイリアス(Aliases)で設定する。たとえば CD-Rドライブが F: として、/www のエイリアス(ローカルパス)を F:\ にする。
ただし、それぞれ、CD-RのドキュメントにアクセスするためのURLは、
(1)では、http://127.0.0.1:8080/
(2)では、http://127.0.0.1/www/
となりますが。
ゲストブックに書き込めないのですが?
AnHttpdを便利に使わせていただいています。
最近、巡回ソフトでダウンロードするディレクトリをAnHttpdの
DocumentRoot以下にし、AnHttpdを通してダウンロードした
ページをLAN経由で見るということをやっています。しかし、ハードディスクの1クラスタが
大きく取られているせいか細かいファイルが多くなると容量が足りなくなってしまいます。
そこでダウンロードしたページをCD-R等に書き出してハードディスクの容量を確保する
わけですが、そうするとAnHTTPDを通してダウンロードしたページを見ることが出来なく
なってしまいます。
もともとそのような使い方はしないと言われればその通りなのですが、
DocumentRootを複数設定出来るようにする事など出来ないでしょうか?
zushiさん、
お疲れさまでした。質問は歓迎しておりますので、どうぞご遠慮なく。
川上さん、
ご丁寧にどうもありがとうございます。
おたずねの、勝手にダイヤルアップの件、起動した時の話なら、
Options/General -- Appearance/Index の一番下の Get Hostname のチェックをはずせばいいかもしれません。
ありがとうございます。Httpdさっそく使わせてもらってます。
size of stdout is NULL だの can't exec だのいろんなエラーを出しながら、
やっとCGIを動かすことができました。(Hello Worldですけど...)
これから勉強しますので、いろいろ質問させてください。
あっけなく動きました。(^^;
お恥ずかしい限りです。
ありがとうございました。
はじめまして。梅田さんのBBSでAN httpdを紹介されて来ました。
挨拶が遅れてしまいまして申し訳ありません。
中田さんのhttpdを大変有効に活用させていただいています。
とくにCGIスクリプトの改造、開発にローカルで試せるのはいいですね。
最近のバージョンになって、だと思うんですが、
文法のエラーログが出力されるのはさすがに便利です。
あと要望なんですが、ダイヤルアップ接続していないとき、
httpdを起動したときに接続に行ってしまうのは
どうにかならないものでしょうか?
インターネットオプションで「LAN経由」にしておけば
済むことなんでしょうけども。
それでは失礼。
めいさん、
いわゆる、 perl への PATH が通っていない状態、のようです。
C:\www\perl\bin に perl.exe はありますよね?
だとしたら、とりあえず ExecProg. for .pl, .cgi のところを 単に perl ではなく、C:\www\perl\bin\perl.exe としてください。
もし、perl.exe が違うところにあるなら、それなりに変えてください。
Lica さん、
それはよかった。
DNSサーバの問題だと10数秒よりもっと応答が遅くなると思ったのですが。
mstk さん、
exec で HTTPD が落ちるとするとちょっとまずいかもしれませんね。
はじめまして。めいと言います。
以前、PC9821で使用していたのですが、NECのNXにマシンを換えたら、どうもうまく動きません。
あちこちの関連ページを見たり、ここの掲示板の過去ログも読んだのですが、ダメみたいです。
autoexec.bat の中はpath "%path%;C:\www\perl\bin;"となっています。
エラーはここの掲示板でも、何回か書き込みがあったのと同じようなもので、
CGI Error - can't exec "perl C:\www\mei\public_html\hello.cgi ", errorcode = 2, No such file or directory
と言う内容です。
DOSプロンプトでのperl -vと言う内容のコメントがありましたが、
ちょっと意味が分からず・・・。
c:\windows>perl -vと打ち込んでみましたが、ファイルがありません、みたいな内容が出ます。
こんにちは。NTでの反応が遅いと報告したLicaです。
ゆうべ、不調だったDNSサーバを再インストール
したところ、見事に生き返りました。
そして今日、会社のイントラネットが完成しました。
CGIは、動いてくれるものと動いてくれないものが
ありますが、とりあえずはできあがったということで、
あとは少しづつ見栄えの良いものにしていこうと思います。
中田さんほかみなさんのご意見がよい勉強になりました。
ありがとうございました。
中田さんありがとうございます。
ばっちり動きました。
昨日FLYのホームページとか参考書を調べて、binmodeには気づいたのですが、
flyのプログラムの実行を
exec("fly -q -i $infile -o $outfile");
などと書いてしまいって。
どーりで動かないし、HTTPDは落ちるし…
ありがとうございました。
mstk さん、
DOS/Windowsではファイル入出力にバイナリ/テキストモードがあり、デフォルトはテキストモードです。
Windows上ではパイプ出力をバイナリモードにすることができないようなので、
open(FOO,"$flyprog -q -i $infile |");
以下を、面倒ですが、
`$flyprog -q -i $infile -o $outfile`;
open(FOO, "$outfile");
binmode(FOO);
binmode(STDOUT);
read(FOO, $output, 4096);
print "$output";
とかするとうまくいくようです。
なお、binmode は UNIX上では何もしないはずです。
尾崎さん
これはちょっと難物です。
Win95のシステムのDLLがらみだと思いますが、調べてみます。
メモリと仮想メモリ(のディスク領域)の量が関係するかもしれません。
よこおさん、こちらこそよろしく。
野里さん、どうも。がんばってください。
An HTTPDとPerlでCGIを動かして楽しんでいます。
最近、FLY(http://www.unimelb.edu.au/fly/fly.html)という
GIFイメージ生成プログラムを試してみようと、
Win95版のFLYをインストールしてサンプルの
cgi-perl-example.plを
試したのですが入力のパイプが上手く処理されず、
ブラウザ上にイメージが出てこないのです。
-oオプションでファイルには出力できるのを
確認したので、プログラムが壊れているわけでは
なさそうだし…
プロバイダのサーバでSunOS版を入れたところ
ちゃんと動いたので、うちの環境で何故、
動かないのか調べ中ですが、なにか知っている方
いらっしゃいましたらアドバイスをお願いします。
cgi-perl-example.plのソース:
#!/usr/local/bin/perl
print "Content-type: image/gif\n\n";
$flyprog = "fly";
$infile = "/tmp/fly.$$";
open(FLY,"> $infile");
print FLY "new\n";
print FLY "size 256,256\n";
print FLY "fill 1,1,255,255,255\n";
print FLY "arc 128,128,180,180,0,360,0,0,0\n";
print FLY "fill 128,128,255,255,0\n";
print FLY "arc 128,128,120,120,0,180,0,0,0\n";
print FLY "arc 96,96,10,10,0,360,0,0,0\n";
print FLY "arc 160,96,10,10,0,360,0,0,0\n";
print FLY "fill 96,96,0,0,0\n";
print FLY "fill 160,96,0,0,0\n";
print FLY "string 0,0,0,10,240,giant,Hello, World!\n";
print FLY "string 0,0,0,100,10,medium,Don't worry, be Happy!\n";
close(FLY);
#この下3行のあたりが上手く動いていない
open(FOO,"$flyprog -q -i $infile |");
while( <FOO> ) {print;}
close(FOO);
unlink($infile);
exit(0);
はじめまして。An HTTPdをきっかけにホームページ作成を楽しませていただいてます。
Win95上でAn HTTPd 0.9beta8d を走らせているのですが、どうも不定期なタイミングで
落っこちてしまいます。(掲示板やカウンタのCGIが動いているときが多いことは事実ですが
単にhtml文章をアクセスしているときや、誰も何もアクセスしていないときにでも、
フト見ると死んでいることがあります…)
その際の詳細メッセージは
HTTPD のページ違反です。
モジュール : HTTPD.EXE、アドレス : 014f:004631c8
Registers:
EAX=840ad000 CS=014f EIP=004631c8 EFLGS=00010246
EBX=00000000 SS=0157 ESP=054573cc EBP=054573ec
ECX=30303030 DS=0157 ESI=0160c814 FS=6687
EDX=00000000 ES=0157 EDI=0160c814 GS=0000
Bytes at CS:EIP:
8b 10 83 c0 04 8b ca 81 ea 01 01 01 01 81 e2 80
Stack dump:
です。私のPC環境が脆弱なせいなのかも知れませんが
アドバイスありましたら、お願いします。
0.9beta8c以前からも同じように落ちることが多く、今回beta8dにしても同じ。
試行錯誤で SingleThread にチェックを入れても状況は、変わりません。
DOSの画面(CONAGENTという名前で、\www\oidon\public_html> のプロンプト状態)
が残ったままになっているのは、何か関係あるのでしょうか?
ああっ、間違ってました。(^-^;)確かに、別のところになってました。
こんな事に、気づかないなんて.../(-_-)\
いま、会社内で自分のホームページをこっそり立ちあげていろいろ
してるので、わからない事ばかりですが、とても楽しいです。(*^^*)
今のところは、掲示板しかおいてないけど、これからいろいろやっていこうと
思います。これから、精進していきますので、宜しくお願いします。<(_ _)>
ご親切にご回答ありがとうございました。これからもがんばりたいと思います。
この役立つソフトをフリーで公開くださったことに本当に感謝します。
よこおさん、
AnHTTPd は bad user directory というエラーメッセージは出しません。
つまり他の HTTPサーバが応答しているということになります。
$reload はどう設定されていますか?
登録ボタンを押した時には $reload で指定された URL を使うので。
あるいは、もともと AnHTTPd でなく他の HTTPサーバが動いている可能性もありますが。
勉強の為に、WWWサーバを立ち上げようと思い、Anhttpdをダウンロードして
使わせて頂いています。それで、質問なのですが、掲示板としてminibbs8.8を
使おうと思い、設置したのですが、マスターキーの設定/変更の画面までは
出てくるのですが、パスワードを入れて登録ボタンを押すと、
ERROR 403
forbiddenーbad user directory
とエラーが出ます。
マスターキーの設定画面まで出るので、ディレクトリ等の記述ミスでは
ないと思うのです、何か他に原因があると思うのですが、特定できません。
宜しくお願いします。
nozato さん、
そのエラーは、jperl では jcode.pl が使えないために出ます。
jcode.pl の中で 2バイトコードの1バイト部分を使っているところがあるためです。
jperl でなくて j なしの perl を使えばエラーになりません。
漢字の置換とかSJISコードの文字列の表示とかがなければ j なしの perl でも大丈夫だと思います。
perl を使ってみて、漢字が化けたりしたら、そこで対応を考えればよいでしょう。
ただしこれは ActiveState の Perl for Win32 (based on 5.003_7 Core Perl code)とそれに基づく jperl での話らしいです。
5.004_xx の jperl だと使える jcode.pl があるようです。私は確かめてみていませんが。
httpdをいつも使わせてもらlています。
perlの勉強に非常によい道具で、接続時間の気になる学生の僕には非常に助かります。
今、初心者虫の初心者なのですが、ひとつ質問です。
jcodeをコードのなかにいれるとline -- should be kanjiというようなエラーでした。
どうしてでしょうか?
お暇な時にお返事お願いします。