ビジターさん、
perl.exe を使うことも ISAPI(perlIS)を使うこともできます。
まずは perl.exe でやってみる方がいいと思いますが、perl.exe を使うなら
[ ] use perlIS.dll for Ext: .pl, .cgi
のチェックをつけないでください。
書いていただいた他の項目はチェックがあってもなくてもかまいません。
#exec cmd の記述内容が消えているのでわかりませんが、一般的に言えば、 UNIXにはあってWindowsにはないコマンドは、もちろんWindows では使えません。
(<, > は、<, > と書いてもらえばここに表示されます。)
galahad さんへはとりあえずメールでお答えしましたが、
「オフライン」でなく「オンライン」にして 127.0.0.1 にアクセスしてみてください。
たぬたぬさん、
さらに難しくなりましたが、1.0 が削除および rename できることからすると、解決可能かもしれません。
Win95 を起動後、CGI以外で VB を使ったアプリケーションの起動の有無は関係していませんか?
ゆう1さんのは、ちょっとわかりません。
errorcode 10054 は ブラウザからのリクエスト受け付け中に「接続がリセットされた」ということで、通常ブラウザで中止ボタンを押した時か、別のURLを指定して前のリクエストが無効になったときのエラーではありますが。。。
話の様子からすると、そういう事態でもなさそうなので不明といわざるをえません。
願わくば、教えてくただきたいので、よろしくお願いします。
PERLとSSIを試してみたいのですが、
実行する為の設定の仕方がよくわかりません。
ISAPIを使わなければ実行できないというように
考えればいいのでしょうか?
もしそうであるならば、
GENERALの以下の設定情報に対して、
どのように設定すればよいのかがよく理解できなくて困っています。
具体例などがあれば、教えてください。
? use isapi for EXT: .dll
? use perlIs.dll for EXT: .dll
? export POST
? /SCRIPT
==========================
試そうとしているソースの内容
==========================
(GIFカウンタ試そうとしていますが、うまく起動しません)
HTTPDのWIN95上での
#exec cmdの記述は以下の通りで(UNIXと同様の命令記述)
よいのでしょうか。
よろしくお願いします。
******ソース*********
<HTML>
<HEAD>
<TITLE>アクセスカウンタ(GIF版)</TITLE>
</HEAD>
<BODY>
<H1>アクセスカウンタ(GIF版)</H1>
<HR>
お久しぶりです。
で、ですね。
IE4.01 にしたらオフラインで接続(CGIのチェック)出来なくなってしまいました。
説明の通り、LAN経由で云々というのもやってみたんですが、やはり接続できません。
どうしたらいいのでしょうか?
本格的にCGI(Perl)を始めたところでのストップなんで、かなりしょっくです(;;)
どうも。お久しぶりです。
で、いきなりですが、IE4.01にしたらアクセスできなくなっちゃいました。
接続しないとダメ、という類のメッセージが・・・・
なしてでしょうか?
中田さん。
お返事ありがとうございます。
どうも、難問を持ち込んでしまったようです。多分・・・
というのは、
1.最初は会社の95hostで動作していた。
2.そのHOSTで何回やってもRenameのエラーがでるようになった。
3.で、家に持ち帰りLOCAL HOSTでやってみると、エラーになってしまう。
4.今日は会社ではやはりエラーが出ていた。
5.ところが、今日は家のLOCAL HOSTで何回やってもエラーなしに動作する。
中田さんからの返事を拝見して、タスクバーの表示が参考になるかも、という
ことでやってみたのです。どういう条件でエラーになるのかがわからなくなって
きました・・・・ ( x) (x;)
で、中田さんからのご質問の回答ですが。
1.www.int21.co.jp のサンプルはそのままは動作させていませんが、例えば
formから送られてきた文字列をそのまま送り返すようなアプリケーションで
はエラーは出ません。
2.エラーが出る場合は約150byte×300行程度のテキストからある文字列を検出
できた行を送り返すものです。ただし、全ての文字にVBの関数で半角全角変
換や小文字/大文字変換しています。
3.そこで、単に送り返すようなアプリケーションにVBのfor〜nextの空ループ
をカウント数を増やして行ってみると、ループが短い場合は出なかったエラー
が長くなるとでます。
4.ファイル"1.0"の内容は全ての場合で返送すべき正しい内容になっています。
5.ファイル"1.0"は削除できますし、当然Renameもできます。
まだ、プロセスのことは良くはわかりませんが、こちらのアプリケーション中
でAPIを使って調査できるようなことがありましたら、何とか調査できるかも
わかりません。
何かわかりましたら、よろしくです。
早速0.97fを頂きました。
exe な cgi がサクサクと動作してくれます。
これでダミースクリプトともお別れです。
要望に対処していただき、有難うございました。
中田さん、こんにちわ。
httpdいつもつかわさせてもらってます(^^)
えっと、、 実は、会社内のイントラネットWWWサーバに、httpdをインストールして
いままで、問題なく稼動していたのですが、今日、アクセスが非常に重くなるとゆう事態に
なってしまいました(;;) タスクバーのhttpdアイコンには雷サインが出っ放しです。
いままで、beta7を使っていたので、beta7fにアップしても同様でした。
エラーログを確認したところ、下記のようなログが大量に出ています。
ローカルでも、クライアントからでも、同様な現象に陥ってしまいます。
Warning: connection reset during recv() in ClientRead() for Thread 0 with errorcode 10054
「SINGLE thread」にチェックをいれてみても同じでした。
あっ、いちおう、環境をかいておきますね。。
NTサーバ4.0SP1
(いまだに、SP3にアップしてないんですが、この前までは動いてました)
httpd 0.9 beta7f
IISもインストールしてあるので、試しにIISのほうのサービスに切り替えたら、
正常にアクセスできました。。(なぜ。。?)(;;)
httpdのディレクトリごと削除して、再度インストールしてもNG。。 とゆうことは、、
NTの再インストールコースですかね。。?(笑)
エラーコードから、なにかおわかりになりましたら、よろしくおねがいします(^^)
たぬたぬさん、
これはちょっと難しそうですね。。
起動したCGIプロセスはその終了をずっと待ち続けるはずなのですが、待つところ(WaitForSingleObject)でエラーになると次へ進んでしまいます。
あるいは、CGIプロセスが外部プログラムを起動して自分は終了してしまう場合もそうなるかもしれません。
AnHTTPd のウィンドウを表示した状態では、プロセスの起動の様子がタスクバーに表示されるので、それも参考になるとは思います。
まだ内容がつかめないので、すみませんが質問をいくつか。。
処理が長くなるとエラーになるとのことですが、www.int21.co.jp のサンプルそのままでは大丈夫なのでしょうか?
処理が長くなる というときの追加された処理(またはデータ)の内容はどのようなものでしょうか?
また、ファイル 1.0 の内容はCGIの出力として正しい内容でしょうか?
さらに、そのファイル 1.0 は削除できるでしょうか?
エイリアスの件、早速直していただいてありがとうございました。
これからもがんばってください。
初めて書き込みさせていただきます。
中田さん、ANHTTPd重宝に使わせていただいております。ありがとうございます。
社内の"隠れサーバ"として快調に動いています。
このところ、なんとかCGIを動かしてみようと思い、Perlで、とも考えたのですが、
他のアプリケーションとの連携を考えて、Visual Basicで(MSの路線に乗っているよ
うでイヤなのですが・・)何とかならないものかとINETで
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/10/aki/vbcgi/
を探し当てました。そこに掲載されてあったリストを参考にさらに改造してANHTTPd
と組み合わせてテストしています。しかし、CGIアプリケーションが短い場合は良か
ったのですが、処理が長くなると、
Error 500 Can't rename - can't rename 1.x to stdout.x
というエラーが出ます。
正常に終了した場合にはWindows\Tempには何も残っていないのですが、このエラー
が生じた時は"1.0"というファイルが残っています。どうやらCGIアプリが終了し1.0
がクローズされる前にANHTTPdがRenameしようとしてエラーになるのではと推測して
います。
何か対策方法があれば教えていただけませんでしょうか。
後々EXCELやWORDと連携したアプリもと考えています。
よろしくお願いします。
中田さん 有り難うございます。
hostsの設定で、プライベートアドレスのクライアントも
速く動く様になりました。
(どんな時でもこのファイルの内容が最優先みたいですね。)
ルータを越えて名前を探しに行かなくなりました。
↑多分そう言う事で速くなったんだと思う。
中田様、/index.htmlの件、予想通りの回答ありがとうございます(^^;
修正のほうよろしくお願いいたします<(_`_)>
中田さん、
ご指摘通り、symlink関数の部分を手直しすることにより
無事、作動させることができました。
ありがとうございました。
BOISさんの御質問も私は経験がないので、他のどなたかに期待しましょう。
田中さん、
NTでのhostsファイルは、Windows\System32\drivers\etc\hosts だと思いますので、そちらにもろもろ入れてみてやってみて下さい。
それでなんとかなるのではないかと思います。
もっとも、ルータ/DNSがらみでどうなるかあまりはっきりわかっていないので、 httpd 側もよりうまく動くように考えてはみますが。
山田さん、
文字通り、symlink 関数は Perl for Win32 では使えない、ということなので、
symlink を使っている所を コメントなどにして無効にしないといけないわけです。
おそらく symlink は ファイルロック用に使っていると思いますので、ローカルでのテストだけなら(ファイルアクセスの競合はないでしょうから)それで動くと思います。
rightman さん、
どうもレジストリが変更できない環境があるようなのですが、いまだどういう場合なのかわかりません。
errors.log に、エラーコードは出ていないでしょうか?
結城さん、
なんと
>/cgi-bin と / の実ディレクトリを一致させる
という手があるんですねえ。
感心してしまいました。
中田さんError 403の件有り難うございました。
とっても恥ずかしいエラーでした。
お手数をおかけしました。
はじめまして。
NTT-TE東京のMN128-SOHOを買うか、NECのCOMSTARZ ROUTERを買うかで悩んで、
結局値段からNECのほうを買いました。
で、買った後で気づいたんですが、NTTのマニュアルにはHTTPdを外部に公開するための
設定がマニュアルにあるんですが、NECのほうにはありませんでした。
以前のここのログを読ませていただいたら、NTTのMN128-SOHOに関する書き込みが
あったので、FAQなどを読んだのですがやはり、設定のしかたが違うので参考になりま
せんでした。
もし、同じCOMSTARZ ROUTER(CMZ-RT-D1)を使って、HTTPdを動かすことに成功している
かたがおられましたら、ぜひ、設定の仕方などを教えて欲しいです。
質問(疑問)なんですけど。
実は、LANのボードを2枚付けたサーバでANHTTPDを
動かしているのですが、表示されるIPがどうしてもローカルIP
の方になってしまうのです。
一枚目のLANボードはグローバルアドレスで、210.159.217.178
二枚目のLANボードはプライベートアドレスで、192.168.0.1
この状態で、表示は192.168.0.1と表示されています。
しかも192.168.0.1にぶら下がっている192.168.0.10とかの
クライアントからのアクセスが約5秒ほど待たされるような感じがあるのです。
5秒ほど待たされる時はどうも外部にまで行ってから戻って来ているようです。
(ルータでIP変換をしています。192.168.0.* は 210.159.217.179)
尚、210.159.217.178はルータ経由でOCNエコノで専用線に接続
プロキシのチェックは付けていません(使用していません)
DNSの設定が悪いんでしょうか?
DNSもサーバに組み込んでいるDNS(210.159.217.178)と、
ローカル用のDNS(192.168.0.2)を設置しています。
サーバ自身のDNSの検索順をローカルのDNSを優先すると速くなりますが
今度はグローバル側のクライアントが5秒ほど待たされるような状態になります。
尚、REMOTE_HOST を Never に設定すると速くなりますが
根本的な解決では無いような気がします。
内容が解りにくいと思いますのでIPアドレスを整理した表を書きます。
グローバル プライベート
210.159.217.177 ルータ
210.159.217.181 クライアントB(モデム)
210.159.217.180 クライアントA(モデム)
210.159.217.179 IP変換用外部アドレス 192.168.0.*
210.159.217.178 NTサーバ1 DNS ANHTTPD 192.168.0.1
NTサーバ2 DNS DHCP 192.168.0.2
クライアント1 192.168.0.10
クライアント2 192.168.0.11
なぜこの様な構成なのかは、OCNエコノの専用線でIPの数が少ないので
プライベートアドレスを使う事にしたため。
じゃ、なぜクライアントA,Bが必要かと言うと実はクライアントでは無く
リモートアクセス(RAS)で、ダイヤルアップサービスをグローバルアドレス
でしています。こうしないとIP逆流などの遊びが出来ないからなのです。
本文書きながら、「やっぱ、そらそうなるわ。」とか思いながら書いていますんで、
良い案があれば教えて下さい。又、Webサーバの方で解決出来る問題なら解決
してもらいたいのです。無理ばっかり言いますがよろしくお願いします。
それからWindowsフォルダの中の hosts.sam を編集しようと
したのですがどうも WINDOWS NT4.0 では、そのファイルが存在
しないようなんですが何処に有るんでしょう?
注意:グローバルアドレスは公表するとイタズラの対象になるので嘘のアドレスです。
中田さん、返事ありがとうございます。
parse CGI Output をチェックして起動したところ
以下のようなメッセージが表示されました。
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
the symlink function is unimplemented at C:\homepage\test.cgi line 485.
DocumentRoot:はC:\homepage にしてあります。
なにが考えられますか。よろしくお願いします。
今日は。初めて投稿します。今は 5 を使っていますが、なぜかoption-general の内容を書き換えても、
レジストリに反映されません。したがって、httpdを再起動したときは、デフォルトのままです。現在は、レジストリを
直接書き換えてます。ちなみに 7 をインストールしましたが、結果は同じでした。,
どなたか原因に心当たりのある方教えていただけないでしょうか?
中田さんへ:
AN HTTPD の設定(Option)を少しいじって、
/cgi-bin と / の実ディレクトリを一致させることで、
どこでも exe がそのまま動くようにしてしまいました。
これならRIMNETの設定と気分的にいっしょ。
〆切に追われつつ、アクセスカウンタのテストをしています。
(^_^;
いつも中田さんの丁寧なコメントに感謝しています。
----
結城浩
http://www.st.rim.or.jp/~hyuki/
結城さん、
ご紹介いただけるとのこと、どうもありがとうございます。
/cgi-bin 以外の GET の exe については、? だけつければ実行するようにしようと思っています。
Jolge さん、
無事動作しているようでよかったです。おかしなことでもありましたらお知らせ下さい。
宮下さん、
Error 403 は、そこに index.html, index.htm がなくて、さらにインデックスリストも表示されるようにはなっていない時に出るエラーです。
ファイル名指定でやってみて Error 404 なら DocumentRoot と Alias(/~username ->) を見直してみてください。
山田さん、
Netscape で データが含まれない エラーでしたら、parse CGI Output をチェックしてやってみて下さい。
おそらく、しかるべきエラーメッセージが表示されると思います。
メッセージ内容が不明ならそのメッセージをお知らせ下さい。
野元さん、
index.html をつけてしまうのは、URLが / で終わる場合に index.html をつけて捜すところのコードといっしょくたになった結果のバグのようです。
で、もちろん直します。
中田様へ:
さっそくのお返事ありがとうございます。
exeの後ろにダミーの query をつけたところ動作しました。
ありがとうございます。
実は今度ソフトバンクのコンピュータ雑誌
『Cマガジン』という雑誌にCとPerlでCGIプログラミングを行なうという
連載をする予定になっています。
その中で中田さんの AN HTTPD も紹介させていただこうと思っております。
連載開始は 1998年5月号で、紹介させていただくのは6月号になる予定です。
#どうも、いつも宣伝めいて恐縮です。
#動作テストで AN HTTPD は強力な味方です。ありがとうございます。
----------
結城浩 hyuki@st.rim.or.jp
http://www.st.rim.or.jp/~hyuki/
はじめまして。
結城さんのホームページからCGIのテストができるフリーソフト
のリンクがあったので来てみて、httpdをDLして、インストールして、
なんだか最初は設定の意味が解らず悩んでいましたが、なんとか
CGIが動作してくれるまでになりました。これで、心おきなく自宅で
CGIテストができます(今は自分のパソコンに回線が接続されてい
ないので重宝しているんです)。
本当にありがとうございました。これからも、よろしくお願いします。
CGIの作成で愛用させて頂いています。
最近、NT4.0+IE4.01+LAN+プロキシの環境で再インストールしたのですが
Error 403 You are not allowed to get Index of this directory
のエラーが出てしまいます。これはどういう意味なんでしょうか?
追伸
最近自動リンクCGI用にWin95版自動運転ソフトを作ってみました。
まだバグだらけのベータ版ですが、よかったら使ってみてください。
http://www.threeweb.ad.jp/~miyasita/autolink/index.htm
それではまた。
>hdleeさん
ってことは、万事解決ですか?よかったですね。
野元 真一様ありがとうございます。このメールはこの文書を書く直前に見ました。ありがとう。wingateを設置しても,httpのアイコンがピカピカしましたので,wingateのproxyサーバが正しく働かないことに気づきました。それを直して,後は,お宅wwwの入り口の表示ページの記述が若干間違いがありまして,今は,なんと,情報発信ができました。うれしいです。本当にそとから見えるのか,何回もいろんな方法で確認しました。ローカルで見えるのではないかと思ったりして。。。皆さん,いろいろ親切に教えて下さってありがとうございます;。これで,cgiの勉強やホームページの作成に本格的に入れます。
>hdleeさん
もしかして、WinGateでポート80をHttpプロキシとして動作させてませんか?
で、AN HTTPDもポート80で動いてませんか?AN HTTPDのWEBサーバ機能自体
ポート設定できなかったかも知れませんが、通常のWEBサーバはポート80です。
一つのポートで2つのサービスは動かせません。ローカルWEBサーバがある
場合、通常はWEBサーバをポート80のままにして、Http Proxyは8080とかの
使われてないポートに割り当てます。
で、ブラウザでProxy指定なしのときは普通にAN HTTPDに接続できるはずです。
Proxyを設定するときには、忘れないように8080など、Proxyのポート番号を
指定すれば、外部への接続はOKなはずです。
外部からAN HTTPDに接続できるようになってるならProxyを設定しっぱなしでも
一端外部に出ることでAN HTTPDにもアクセスできますよね?
初めて書き込みさせていただきます。よろしくお願いいたします。
ANHTTPD をローカルテスト用に使わせていただいておりめす。
ANHTTPDそのものは順調に稼働しておりますが、
CGIがうまくいきません。
Perlもインストールしたつもりですが
Netscape(Ver3.01)で http://127.0.0.1/XXX.cgiを実行すると
「文書にデータが含まれていません」という窓が出て
表示をしてくれません。
XXX.cgiはいろいろなところから入手したプログラムで
perl -c XXX.cgi ではいずれも syntax OK です。
結城 浩さんの本のHELLO! を表示させるCGIプログラムは
うまく表示できました。
おそらく初歩的なミスだと思いますが
超初心者で、見当がつきません。
思い当たることがあれば、ぜひともお願いします。
ANHTTPdが設置されているサーバからは,お宅WWW入り口へ登録した入り口を通ってINDEX.HTMLファイルを開けました。
クライアントはエラー500です。PROXY Server Error. Can't find the DNS entry
for the requested server.
いちよう,自宅wwwサーバは動かしたことになりますか。
クライアントからもアクセスできるようにしたいですが。。。無理でしょうか。
ありがとうございました。
ANHTTPdをサーバに設置しました。そして,wingateも作動させました。
クライアントでは前と同じく,error 500が出ます。
しかし,サーバでは,http://203.240.167.185/~bpkが正しく出ました。ただ,ie4。0はproxyサーバを通さないでlanに連結にとoptionされています。
お宅WWW入り口へ登録して入ろうとしましたが,
Error 403
You are not allowed to get Index of this directory
が出ました。大変難しいことですが,近く接近していくのですか。お願い申し上げます。
AnHTTPありがたく使わせて頂いてます。cgi-mlでもお世話になってます。
AnHTTPで一つ気になる点があります。PATH_INFOの返し方です。
Apacheなど、よくあるhttpdでは、PATH_INFOとして以下のような
値をかえしますが、AnHTTPでは最後が / で終わったときに
index.htmlと余計な文字列まで付いてしまうようで、
PATH_INFOを活用した掲示板などで、うまく動かない場合がありました。
Apacheなどの場合(左がURL。右がPATH_INFO)
http://〜/cgi-bin/time.cgi/test → /test
http://〜/cgi-bin/time.cgi/test?〜 → /test
http://〜/cgi-bin/time.cgi/test/ → /test/
http://〜/cgi-bin/time.cgi/test/?〜 → /test/
AnHTTPの場合
http://〜/cgi-bin/time.cgi/test → /test
http://〜/cgi-bin/time.cgi/test?〜 → /test
http://〜/cgi-bin/time.cgi/test/ → /test/index.html
http://〜/cgi-bin/time.cgi/test/?〜 → /test/index.html
設定で変更できるものなのでしょうか?仕様でしょうか?
どちらが正解かはわかりませんが、できましたら他のhttpd
と同じ値を返してくれるようにしていただけませんか?
中田さんお手数かけます。
xxx.xxx.xxx.xxx mypc+ドメイン名でうまくいきました。
ただ、ルータのDHCP機能はrawのまま使いたいので、ホスト名だけでドメイン名をつけないでアドレス解決するオプションがあればうまくいくような気がします。
でもやはりダイヤルアップルータのDNSサーバにはドメイン名を知らせている(当然mypcのドメインでもあるはず)ので、
うまくローカルなDHCP機能だけで処理(ダイヤルアップしなくても)してくれてよいと思いますけど。(ルータの仕様が悪い?)
また何のためにwin95のTCP/IPプロパティにホスト名+ドメイン名を登録しておくのかよく意味がわからないです。
アドレスだけで登録しないプロパティのバージョンもあるようなので混乱してしまいます。
別件ですがこのルータは無通信状態が数十秒つづくと回線遮断する機能があり、外のwebを見た後しばらくたってからローカルのhttpd管理のwebを見るとハングしてしまうようです。
hdlee さん、
C:\Windows\hosts に
203.240.167.185 Mmx_200.shinbiro.com
という行を入れてください。
ただ、WinGate も使って、AnHTTPd は単にHTTPサーバとして使う方がいいと思います。
結城さん、
URLで直接指定する時などのGETメソッドのときは /cgi-bin 以下にあれば CGI として動作するはずです。
GET で /cgi-bin 以外のときには、xxxx.exe?abc など ? とダミー引数が必要です。?以下がないときはダウンロードになります。
また、POSTメソッドのときは CGI として動作すると思います。
以上の扱いは自己解凍のexeファイルをダウンロードにするためです。
なお、拡張子 .exe の扱いは検討中ですので、今後少し変わるかもしれません。
Kazu中田(Nakada)さん、
DHCPでなくてIPアドレスが固定されていれば、hosts に
xxx.xxx.xxx.xxx mypc
でなんとかなるのではないか、と思います。
もっともホスト名(mypc)はそのPCのTCP/IPの設定の DNSを使う ところのホスト名+ドメイン名を入れておく必要があると思いますが。
ダイヤルアップルータでDHCPとなるとどうしてもダイヤルアップしてしまうのかもしれません。
やはり、AnHTTPd の方で、ホスト名を探しにいくのをやめるオプションをつけた方がよさそうですね。
かわしまさん、
メールでお答えしました通り、メールのフォワード先のエラーでした。
nakata@st.rim.or.jp にはすべてちゃんと届いています。
千木さんのお話は、渡辺さん、とむねこさんのお答えで解決したようですね。
ここのは、ゲストブックのファイルを読んで一時ファイルにそのまま書き出す時、はじめに最新データを書く、というやりかたです。
そのあと一時ファイルをゲストブックにコピーします。
今日は,また来ました。方法を変えてやっていますが,また,壁にぶつかりました。クライアントにWebサーバを置くのはよくないことが分かりました。AN HTTPdにもProxyサーバがあることが後で分かり,WINGATE変わりにANHTTPdを使うことにしました。そしたら,一つのプログラムで情報発信と,同時に他のクライアントからでもインターネットが見られると期待しています。
現在,内部IP192.168.0.1であるサーバにANHTTPdを設置しました。
LANの内部IPを使うとつまり,HTTP://192.168.0.1/~bpkするとよく見られます。しかし,サーバに割り与えられたIP203.240.167.185ではアクセスできません。HTTPdの窓のなかの内容は次のようです。
SERVER READY on Mmx_200.shinbiro.com at PORT 80
Microsoft Windows Sockets Version 1.1.[Win95]
for DocumentRoot:D:\www
Server socket initialized-waiting for connections.
host=192.168.0.1, addr=192.168.0.1
クライアントからhttp://203.240.167.185/~bpkすると,
Error 500
Proxy Server Error Can't find the DNS entry for the requested server.
と出ます。自宅www入り口に登録してそこから入っても入れません。
Proxy Serverの設定がどのようにしますか。教えて下さい。
失礼致しました。
いつもお世話になっています。
もしかしたらFAQなのかもしれませんが、質問です。
Perlのスクリプト以外の実行ファイル(たとえばVC++で作成した実行ファイル)
は An HTTPD ではCGIとして実行できますか?
たとえば以下のようなものです。
printf("Content-type: text/html\n\n<HTML>HELLO</HTML>\n");
試したのですが、どうもうまくいかないのです。
Netscape Navigatorでやると、「名前をつけて保存」になってしまうのです。
お忙しいところ大変おそれいりますが、ご教授願います。
中田(nakata)さんどうもお手数をかけていただき、申し訳ないです。
ちなみに私は中田(nakada)です。 先祖代々濁音のようです。
ご指摘の内容について試してみました。
現在使用中のダイヤルアップルータがDHCP機能でDNSサーバをブロードキャスト(自分自身もしくはプロバイダのDNS)
するようなのでDNSサーバを使用しないとか、DNSサーバを127.0.0.1にするといった対策がうまくとれません。
試した内容は以下の通りです。
<試行1>
ファームウェア(ルータに内蔵)で127.0.0.1をDNSサーバとしてブロードキャストするモードにする。
TCP/IPのプロパティでもDNSサーバを使用しないor127.0.0.1にする。
<結果>
ダイヤルアップしてしまう。
ルータなのでサブネット以外のipをダイヤルアップして送出する為?
仮に上記のような解決法が成功したとしても毎回マニュアルでするとあまり操作性が...
<試行2>
ファームウェア(ルータに内蔵)でダイヤルアップルータ自身をDNSサーバとしてブロードキャストするモードにする。
この場合ダイヤルアップ先でブロードキャストされたダイヤルアップルータを取り込みルータが記憶する。
したがってTCP/IPのプロパティでDNSサーバを使用しないにしてもWWWが使える。
<結果>
ダイヤルアップしてしまう。
mypcのアドレス解決するためになぜがダイヤルアップしてしまう?(ダイヤルアップルータのDNS機能に問題がある?)
or試行1と同じ理由?
hostsに自身のコンピュータ名mypcを
127.0.0.1 localhost
127.0.0.1 mypc
or
127.0.0.1 localhost mypc
で登録してもだめでした。
試行1の結果からすると、アドレス解決ができずサブネット外のipアドレスが流れてダイヤルアップしているような気がします。
ネットワーク上のパケットやプロトコル通信状況をみるツールを持っていない(知らない)ので、
解析をしていない状態で推測だけの話で申し訳ないです。
ちなみにNetVehicleのホームページは
http://www.fujitsu.co.jp/hypertext/Products/telcom/NV/
です。
とむねこさんへ;
御助言を有り難う御座いました。御陰様で解決いたしました。reverse っていう関数があったんですね。僕の買ったCGIの本にはこの関数が載ってませんでした(;;)。サーバにどのくらい負荷がかかるかは分かりませんが、もしこれでマズイようであれば、プロバイダからクレームが来るでしょう(^^;)。
とにもかくにも、一応解決しましたことに感謝申し上げます。m(__)m
中田さん:
メールありがとうございました。
ところで、昨日のメール Message-Id: <3516510B0.7A69.kawasima@wsd.ho.nec.co.jp>も、
いま出したお返事メール Message-Id: <3516F7262C6.6DF9.kawasima@wsd.ho.nec.co.jp>も、
エラーが出てます。
昨日のメールはちゃんと届いたようなので、多分今日のも届いていると思いますが...
届いていますか?
千木さん、表示前に、
@data = reverse(@data);
とやってから表示してはいかがでしょうか。
CPU負荷がどのくらいあるかわかりませんが逆順になります。
渡辺さん、早速の御助言を有り難う御座います。
僕のはアンケートフォームなんです。
1.まずアンケートの各項目(17項目)を \t で区切って最後を \n にして1件分を1行として $data に記録し、data.dat に保存してます。
2.その data.dat から、
open(DAT,">>data.dat");
print DAT $data;
close(DAT);
としています。なかなか文章での説明は難しいですが、こんな感じです。僕にはもうちょっと勉強が必要ですね。
初めまして。いつもanhttpdを使わさせていただいております。大変重宝しています。
困るのは実際にホームページを置くところのhttpdよりもanhttpdのほうが「賢すぎる」ことくらいでしょうか(^^)。どうやら、僕のホームページが置いてある所のapacheでは、SSIではカレントディレクトリのスクリプトしか実行できないようです。
0.97e、早速ダウンロードしました。強制終了しないかどうか試してみます。
さて、千木さんの質問なんですけど、わかりそうな気がするので横から口を出させてもらいます。はずしていないことを祈ります。
perlを使ってるとしますと、書き足しの際には恐らく
open(DB,$datafilename);
@lines = <DB>;
close(DB);
push(@lines,@new_messaages); #新規メッセージを追加
open(DB,">$datafilename");
print DB @lines;
close(DB);
といったような部分があると思いますが、このpush[配列の最後に別の配列を追加]のところを、unshift[配列の最初に別の配列を挿入]に変えるだけでいいです。
もし先頭に必要な行がある(HTMLファイルに直接書き込む場合など)には、splice関数などを使えばいいと思います。
あるいは、それぞれの書き込み日のデータを数字で(timeからの出力そのままで)記録しておき、出力時にこれでソートしてもよいかもしれません。表示時にはlocaltime関数を使って文字列に直せば良いでしょう。
これで、お役に立つでしょうか...?
質問があります。
このゲストブックは中田さんの自作かと思います。僕も同じようなCGIスクリプトを作成しておりますが、ただ一つだけできないことがあります。それは、新着メッセージが常に上に記載されるようにすることです。CGIの本の通りにやったのですがうまくいきません。新着メッセージが上に来るようにするためにはどうすればいいんでしょうか。いいアイデアが御座いましたら御教授御願いします。
Kazu中田さん、
その構成でどうなるかさだかではありませんが、httpdの起動の時となると、起動時に自分のIPアドレスとホスト名を検索(gethostbyaddress)しにいくからだと思います。
C:\Windows\hosts ファイルを用意するか、とりあえずDNSを使わない設定にするか、などをやってみてもダイヤルアップするようなら、起動時にホスト名検索をしないオプションをつけ加えるべきかもしれません。
(あるいは、DNSサーバの最初を 127.0.0.1 にするなど。。。?)
富士通のダイヤルアップルータ(NetVehicleEX3)の端末接続(マルチNAT)で接続しているのですが、
httpdを起動すると最初にダイヤルアップしてしまいます。
プロバイダのDNSサーバに何か確認にいっているのですか?
なにか設定が悪いのでしょうか? faqやreadme、guestbookは見たのですがよくわからなくて。
ローカルで動作チェックする為にhttpdは非常に便利なのですが今は起動すると10円が...
kawasaki さん、
ご指摘の通りで、手抜きが原因のバグです。
次の版で直しますので、少々お待ち下さい。
千木さん、
どうもありがとうございます。
ご愛敬と言ってくだされば気が楽ですが、なんとかその愛敬もなくそうと思っています。
Kazu中田さん、
昨日からホームページでこれからすぐCGIというのもすごいですね。
疑問の点でもでましたらおたずね下さい。
はじめまして。早速ですが、
OptionsのGeneral...にあるエイリアスを設定するところですが、たとえば、
/zzz -> DocRoot\xxx\yyy
と指定したとき、
ブラウザから DocRoot/xxx/yyy/zzz123.cgi
とアクセスしたときに、DocRoot/xxx/yyy/xxx/yyy/zzz123.cgi と展開されてしまいます。
つまり、ファイル名にもエイリアスが適用されているということと、適用されるディレクトリが
DocRootの下であればどの階層のディレクトリでも適用されているということです。
私のイメージでは、ホストアドレスの次に/zzzを指定したときだけ対象になるのだと思っていたのですが、いかがでしょうか?
中田様:
Pw32i316.exeを再インストールして
jperlをperlにすれば動きました。
perl -vでのバージョン表示もできました。
的確なサポートありがとうございました。
いつもhttpdを便利につかわさせて頂いております。お陰様で僕の自宅サーバも順調で
す。ただ、CGIのテストランのとき、ちょっと強制終了がおこったりしますが、ご愛敬ですね。
これからも良いソフトをご提供下さい。
なお、僕の自宅サーバはテレホタイムだけですが、お立ち寄り下さい。
ここから利用できます。
昨日からホームページを初めて作成しています。
これからCGIのチェックを始めるときにこのソフトの存在を知り大変助かっています。
ありがとうございます。
中田様
ありがとうございました。
ご指摘どおりのことを確認しましたら、
正常に動作しました。
hdlee さん、
Minibbs は、Rescue's Script Archive(Web裏技)の Minibbs ならフリーウェアで改造自由ただし無断再配布禁止 だと思います。
ハングル表示にするのは改造だと思いますが、再配布するなら著作権者に聞いてみた方がよいと思います。
WinGate の方は、
基本的にはその構成だと、内部のLANでしか見えないと思います。
IPアドレス 203.240.167.185 の内部IPアドレスが 192.168.0.1 ですから。
203.240.167.185 宛てのHTTPリクエストを 192.168.0.3 に自動的に送るようにできればいいわけですが、WinGate の FAQ をざっと見た限りではちょっとできそうもありません。
しかし、できるのかもしれないので、これも WinGate の方に質問してみてください。
日本語の入力モードを直截入力にしてもう一度入力したら,動きました。今朝,直しましたが,今きてみたらご親切に
答えて下さってありがとうございます。
今,MINIBBS.CGIも動きました。表示の部分を日本語からハングル(韓国語)に変換して使いたいですが,
これはかまいませんか。
今は,日本語ウィンドウ95システムの上にAn HTTPを設置してやっています。モデムがついているシステムはハングルウィンドウ95です。つまり,192.168.0.1はハングルシステム,192.168.0.3は日本語ウィンドウシステムです。
WINGATEで繋がっています。
現在,サーバであるモデムがついているハングルシステムからHTTP://192.168.0.3/~BPK/BBS/MINIBBS.CGIとしたら見えます。
これは,内部のLANでしか見えないものでしょうか。
他の場所のひとが見るようにするには,とうすれば,できますか。
専用ダイヤルアップモデム線がつながっています。そのIPは,203.240.167.185です。
現在,LANで繋がっているシステムからインターネットができるようにWINGATEが動いています。
ここでこのような質問をする場所じゃないかもしれません。その場合は,大変な失礼ですが大目に見てください。
中田さんへ
毎度の素早い対応、本当にありがとうございます。
アドバイス通り設定しましたところ、無事解決致しました。
自分のパソコンで掲示板が動いた時は、本当に感激しました。
私のような素人では、自分一人では解決出来なかったと思います。
お忙しい中、丁寧に教えてくださり本当にありがとうございました。
岡村さん、
JPerl の 315j116b.exe を使うなら、Pw32i316.exe でなく Pw32i315.exe(316でなく315)がインストールされていないといけないはずです。
とりあえず JPerl でなくて Perl を使うことにして、再度 Pw32i316.exe を実行して、そのあと315j116b.exe の方は実行しないでおいてください。
次に perl.exe への PATH が設定されていないようですから、
ExecProg for .pl, .cgi のところを C:\Perl\bin\perl.exe のようにフルパスで指定しておけば動作すると思います。
中田さん、早速のアドバイスありがとうございました。
おかげさまでError 404は解決いたしました。
しかし、今度は以下のようなエラーが出てきてしまいました。
Error 500
CGI Error - can't exec "perl C:\www\xxx\public_html\hello.cgi ", errorcode = 2, No such file or directory
このエラーはhello.cgiとWeb裏技さんの「簡易掲示板」をオフラインでの動作を試みた時に起こりました。
過去のコメントを拝見いたしまして、(1998/02/25 09:00)の方と似た症状だと思い、以下のような対策を施しましたが上手くいきませんでした。
●parse #! line, use perlIS、共にチェックは外しました。
●Options/Generalの ExecProg for .pl, .cgi のところをperlに書き替えました。
●parse CGI Outputのチェックを付けました。
あと、私がインストールしたPerlはJPerl for Win32です。
(ダウンロードしたファイルはPw32i316.exeと315j116b.exeです。)
度々お手数をおかけいたしますが、よろしければいま一度ご助言下さいますよう、宜しくお願いいたします。
pekachu さん、
404 エラーの方は、ファイル名、拡張子を確認してください。
500 エラーの方は、jperl でなく perl を使ってください。
takami さん、
jcode.pl が jperl では使えないためのエラーです。
Options/General の ExecProg for .pl, .cgi を jperl から j のない perl にしてください。
また、Pw32i316.exe を再度実行して再インストールした方がいいでしょう。jperl のバージョンが 316 ではないようですから。
岡村さん、
hello.cgi が hello.cgi.txt になっているようです。
エクスプローラでは、登録した拡張子は表示しない のチェックをはずすと、hello.cgi.txt と表示されると思います。
名前の変更で hello.cgi と直してください。
かわしまさん、
chat.pl が何も出力しない、ということになりますね。
(1)system や chdir が使われている
(2)実行ディレクトリが perl.exe の場合と違う場合があるので、相対パス指定のファイルが開けない
などが考えられます。
不明であれば、どこのチャットか教えてください。あるいは、chat.pl をメールで送ってください。
hdlee さん、
Options/General の
DocumentRoot [ (1) ]
[/~bpk ] -> DocRoot\ [ (2) ]
の設定の問題ではないかと思います。
(1),(2)がどうなっているか教えてください。
ぴかさん、
永久ループの CGI を2つ動かしている状態で 5k の GIF を 20枚もつ HTML を表示させようとするとアクセス違反で httpd が強制終了するのは確認できました。
まずはこれの対策をとってみますので、少々お待ち下さい。
中田さんはじめまして。
CGIを使いはじめたばかりですが、
ローカルでCGIの動作確認ができたらと思い、
OIDONさんのところからきました。
実は、私もtakamiさんと同じ現象で悩んでいます。
正常に動作するCGIもあるのですが、
特定のCGIにアクセスしようとすると、
Error 404
Not found - can't find cgi script or executable C:\www\xxxx\public_html\xxxx.cgi
もしくは
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
tr : both end of - should be kanji at ./jcode.pl line 237.
という2種類のエラーが表示されます。
ちなみに、ブラウザはネスケ4.04jaとIE4.01です。
よろしくおねがいします。
ネットワーク上にあるHPは、
こちらにあります。
中田さん、どうもありがとうございました。
全くの初心者なので、不明な個所が多くて大変です。
これからもどうぞ宜しくお願いします。
中田様:
初めて投稿いたします。
「OIDON」さんのページを見ながら
インストールさせていただきました。
「HELLO WORLD」はうまくいったのですが,
「miniBBS」は
Error 500
CGI Output Message:
tr : both end of - should be kanji at ./jcode.pl line 237.
となってしまいます。
バージョンの違いなどによるエラーなのでしょうか?
また,perl -vを実行すると
Perl.exe requires Build 316 of Perl300.dll
と表示されますがこれでいいのでしょうか?
どうぞよろしくお願いいたします。
下のコメントで全部の行に改行タグを使ってしまいました。
申し訳ありません。
はじめまして、おいどんさんのページからこちらに来ました初心者です。
実は、以前(1998/02/09 20:01)こちらで取り上げられた
Error 404
Not found - can't find cgi script or executable C:\www\xxx\public_html\hello.cgi
で悩んでおります。
エラーログは
Error Response 404 for /xxx/public_html/hello.cgi
となっており、
設定は、
DocumentRoot [C:\www]
[/~xxx] -> DocRoot\[xxx\public_html]
となっており、テストのために作ったindex.htmlでhttp://127.0.0.1/~xxxやhttp://127.0.0.1/readme.htmlのhtmlは表示されます。
hello.cgiが C:\www\xxx\public_htmlにあるのにこのエラーになるという事は、hello.cgiの保存の仕方が間違っているのでしょうか?
※記述内容はおいどんさんのhello.cgiをダウンロードしてリネームしたので間違いは無いと思います。
hello.cgiのプロパティを見ますと
種類:テキスト文書
場所:C:\www\xxx\public_html
MS-DOSファイル名:HELLOC~1.TXT
となっております。
お手数ですが、ご助言くださいますようよろしくお願いいたします。
中田様:
たびたびすみません。
PerlIS.dllの件ですが、バージョンをあわせてダウンロード&インストールしました。
お陰様で前回のエラーは出なくなったのですが、今度はブラウザ上に、
'b:\http\www\cgi-bin\chat\chat.pl' script produced no output
というエラーが出てしまいます。
エラーログは残っていません。
たびたびすみませんが、対処方法教えてください。
教えて下さい。
Error 403
You are not allowed to get Index of this directory
Wingateを使っています。3番目の192.168.0.3が日本語ウィンドウシステムに
なっており,ここにhttpを設置しましたが,http://192.168.0.3/~bpk/が読めません。
http://192.168.0.3/readme.htmlは,よく読めます。
設定に何かが間違っていますか。教えて下さい。
中田さん、ご返事ありがとうございました。
httpdが落ちる原因として確かなのは、「とむねこ」さんがおっしゃるように、
ブラウザに画像などが多く張ってある場合、同時に読み込む時です。
沢山と言っても、そうですね、普通のサイズ(10k程度)で7枚以上でしょうか。。
このような、画像付きhtmlや、複数(4人程度)のチャットで負荷が
かかってくると、落ちる事が判明しました。
95のリソースメータでは、落ちる時は負荷は100%です。
お忙しいでしょうが、機会がありましたら、その点ご確認ください。
よろしくお願いいたします。
レイさん、
'123’が %82P%82Q%82R になるのはそれで正常です。
シフトJISの漢字や特殊文字など各バイトが 7bitASCII の範囲外のものは、 % に続く16進数2文字 に変換されてサーバに送られます。
たとえば、SJIS の '1' は、16進数で、0x82, 0x50 ですが、0x50 は 'P' なので %82P となります。
なお、' '(スペース)は '+' になります。
input4.bat の中で使っている hex2bin.exe はこれを元に戻すプログラムです。
元に戻すのを Perl で書く場合は、
$buffer = $ENV{'QUERY_STRING'};
@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
} というのが慣用句のようです。
いっつさん、
QUERY_STRINGで受け取るのであれば問題ありませんが、$ARGV[1] などで受けるとカットされていることがあります。
念のため。
かわしまさん、
perl.exe と PerlIS.dll のバージョンはあっているでしょうか?
perl.exe付属の perl300.dll を PerlIS.dll は使うので、バージョンがあっていないとエラーになると思います。
中田さん、どうもありがとうございました。
jgawkをGnu Awk (gawk) 2.15.2 + 1.1 日本語対応版とし、jgawkのpathを入れたら
input2.batをいじらなくても入力テキストが表示されるようになりました。
ところで、CGIテストの「入力は、GET を使って」 と「もう少しまともな応答は」は
日本語(例えば、123)を入力すると、%82P%82Q%82Rと表示されますが、これで
正常なのですか?
田中さん
早速の対応ありがとうございました。引数が長くなっても問題なく動作するようになりました。
中田様:
こんにちわ。
早速ですが、教えてください。
perlis.dllをインストールして、ちょっとでも早くcgiを動かそうとしているのですが、
「use PerlIS.dll」をチェックすると、
Wed Mar 18 09:49:46 1998 LoadLibraryEx("A:\jperl5\bin\PerlIS.dll") failed with errorcode = 11
というエラーが出てしまいます。
perlis.dllのインストールはちゃんと出来ていると思うのですが...なぜでしょう?
よろしくお願いします。
レイさん、
jgawk へのパスは入れてあるでしょうか?
ただし、jgawk の記述の仕方が、16bit-DOS用 jgawk のものなので、input2.bat の中のシングルクォートをダブルクォートに変えるなどの修正の必要があるかもしれません。
*.tex 云々の方は必要ないと思います。
あるまじろさん、山崎さん、
ご丁寧にどうも。
次の予定は、Alias、 .cgi で .exe 実行、ログイン時のサウンドなどです。
いっつさん、
とりあえず 0.9 beta 7d では、NTで スクリプトパス+引数 で80文字を越えても実行するようにしました。
$ARGVの方はカットされますが、QUERY_STRINGにはちゃんと はいって実行するはずです。
引数をカットした場合はエラーログにその旨表示します。
CMD.EXE で実行したいところですが、今のところ標準入出力の操作がうまくいかないので。
はじめまして、
一応インストールを完了し、早速CGI TESTを試してみたのですが、
「CGI TESTのもう少しまともな応答は」の所は何を入力しても
入力された文字列は、 ですね。 としか表示されません。
その他のテストはOKです。何がいけないのですか?
OSはNT4.0
httpdのpathはd:\www、jperlはd:\www\perl\bin、jgawkはd:\www\jgawk、
shはd:\www\cygnus\B19\H-i386-cygwin32\binです。
autoexec.batにperlのpathも記入しました。
ただ、Jgawkのreadme.jpnに書いてある
「*.tex ファイルを TEXINPUT のパスの通ったディレクトリにコピーします。」は
texinputのパスが理解できず、*.tex ファイルはd:\jgawkのままです。
これが原因ですか?
要望してましたインデックスリストのソートを、Version 0.9 beta 7c で
対応して頂きありがとうございます。
動作確認させて頂きました。バッチリOKでした。
あるまじろです。「#include virtual での CGI実行」への対応ありがとうございます。
サーバと一部環境が違うためにcgiの手直しが必要でしたが、動作確認できました。
これで事前確認や実験もパソコンで安心して出来るようになります。
今後とも宜しくお願いします。
田中さん
command.com の問題ですか。NTの場合はcmd.comを使うってのは無理なんでしょうか。
ISAPIは、環境変数がうまく取れないので使っていません。
いっつさん、
確認しました。どうも、NTの command.com の問題のようです。
コマンドラインで、 command.com /c perl xxx.pl longlong...arg ではエラーになります。
具合の悪いことに、0.9 beta 7c では アクセス違反で httpd が落ちてしまうようになってしまっていました。
落ちないようにはしますが、上の問題の解決にはなりませんので、対応を考えます。
なお、ISAPI(PerlIS)では大丈夫です。
木村さん、
リソースの減少については私もよくわかっていません。
リソースメータをみながら推定してくしかないかな、と。
あやしいプロセスを終了してリソースの復活の状況をみるとか。。。
POCHI さんへ
Windows95用のメールサーバで、
Personal mail Server for Windows95/NT
というのがあるようです。(フリーソフトです。)
場所は、
http://www.vector.co.jp/authors/VA011428/
です。
私は使った事がないので詳細は解りませんが、
一度試してみてはいかがでしょうか。
田中さん
parse CGI Output をチェックして実行してみました。結果は以下のとおりです。
----------------------------------------------------
Error 500
CGI Error - size of stdout is NULL
----------------------------------------------------
80桁の件、もう少し詳しく調べてみました。実例で説明します。
以下のPerlスクリプトを作ります。
----------------------------------------------------
#!/usr/local/bin/perl
#
print "Content-type: text/html\n\n";
print '('.$ENV{'QUERY_STRING'}.')';
----------------------------------------------------
上記スクリプトの絶対パスは「C:\home\usr6\youichi\public_html\cgi\test.cgi」です。
これをブラウザからオプションなしで動作させると以下の表示になります。
----------------------------------------------------
()
----------------------------------------------------
次に、オプションを「12345678901234567890123456789012345」にして実行します。
----------------------------------------------------
(12345678901234567890123456789012345)
----------------------------------------------------
今度は、オプションを「123456789012345678901234567890123456」にして実行します。
----------------------------------------------------
Error 500
CGI Error - size of stdout is NULL
----------------------------------------------------
確認のために、コマンドプロンプトから動作させてみましたが、オプション(QUERY_STRING)に200文字以上入力しても、問題なく動作しました。
なお、問題が発生しているマシンはNT4.0です。Win95では、この問題は発生しません。
連絡が遅れてごめんなさい。
中田さんへ
たびたびすいません。
ご返答ありがとうございます。
サーバソフトによって設定の仕方が違うということですが、
Win95のみのLAN環境の中で、とりあえず使用することを考えています。
AN HTTPと相性のいい、メールサーバソフトがあればぜひ使ってみたいのですが(できればフリーのほうがいいです)
いいものがあればぜひ教えていただきたいのですが。
よろしくお願いいたします。
中田様へ
いつもお世話になっております。
初歩的な質問になってしまうのですが、サーバを長時間稼動させておくとリソースが
徐々に減少していってしまうのですが原因の見当がつきません。良くわからないのですが
サーバに入ってきたクライアントがFTPでファイルのダウンロードをしていくか、PERL
によるスクリプトが実行される事によりHTTPよりファイルハンドルが起きてリソースを
要求して開放しないのか?PERL自体がリソースを食っていってしまうのか?などなど
勝手な推測をしています。で、どうにか解決したいので助言をお願いします。
いっつさん、
Options/General で parse CGI Output というのがあるので、そこにチェックを入れてみてください、ということです。
Netscape で no output の時は、CGIが正常に Content-type を出力せずになんらかのエラーメッセージだけを出力していることが多いのですが、上のチェックを入れるとそのメッセージが表示されます。
>FORM ACTION= でのURL指定の実例を示してもらえると助かります。
HTMLで
/cgi/hoge.cgi?12345678901
とかやって、その実際のパスが
c:\home\page\dokokano\provider\user\youichi\public_html\cgi\hoge.cgi
12345678901234567890123456789012345678901234567890123456789012345678901234567890
の場合、実行ファイル+オプション+1で80ですよね。
これよりオプションや絶対パスが増えるとエラーになります。
ともったら、再現しません。(^^;
会社でやったときは上記のようになりました。月曜日にまた確認してみます。
会社と比べて違うことと言えば、NetBEUIを使ってないのとDNSのドメインを使っていないことくらいです。
>あと Netscape で no data なら、parse CGI Output でエラーメッセージが出ると思いますが
ごめんなさい。意味が分かりません。
parse CGI Output とは何でしょうか。
POCHIさん、
どうもありがとうございます。
メールサーバの設定については、動かすサーバソフトが何かによると思いますが。。。
社外とのやりとりをするメールサーバが他にあるのなら、PC上で動かすメールサーバはそこへ送るだけでいいはずですけど。
中田さんへ
私は、最近(本当に最近)インターネットなるものを触り始めたばかりの超初心者です。
そんな私に、会社のマシン(一応自分専用らしい)でも、インターネットのサーバのような
機能がほしいと、思い始めたとき、このすばらしいソフトに出会いました。
しかも、超初心者の私でもセットアップは簡単にできてしますし
フリーソフトということの素晴らしさも含め、大変感謝しております。
さて、質問をしたいのですが
社内用に、メールサーバなるものを、私のマシン上で動かしてみたいと思うのですが
どこをどうやって設定するのか、皆目見当がつきません。
どうか、私に知恵を授けてください。お願いいたします。
artice さん、
早速サンプルページへいってみました(6番目でした)。
なかなか面白そうですが、今度 HELP他を読んでやってみようと思っています。
にっしゃん(さん)へ
なるほど、 GIFs on the fly みたいなことをやっているということでしょうかね。
1.0 は削除しようとしてもだめですよね(?)。CTRL-ALT-DEL で出てくるプログラムのリストの中に、WinOldApp とかそれまでなかったものがあったら終了してみてください。
それで 1.0 は削除できて、その後 Error 500 は出なくなるのではないでしょうか?
再起動でなくてこれで対応できるのではないかと思います。
もっとも、exec で起動したプロセスが 一時ファイルの 1.0 をつかんだままになっているのだと思うので、どうしてそうなるのか確かめないといけませんが。
やはりスクリプトと関連ファイル一式を送ってもらった方がいいかもしれません。
自作プログラムの宣伝ですので、不都合があれば消してください。
ダイヤルアップでHTTPサーバを公開されている方のために、IPSXと言うプログラムを作りました。ダイヤルアップでは、IPアドレスは接続する度に変わってしまいます。IPSXはこの不具合を解消するためのもので、
1. タスクトレイに常駐し、ダイヤルアップ接続を待つ
2. 接続されたら、指定されたサーバ(プロバイダの自分のアカウントなど)に、そこにアクセスした人を自分のサーバに転送してくれるファイルを書き出す
3. ダイヤルアップの接続がある度にこれを行う
と言う作業を自動で行うプログラムです。ここにヘルプファイルだけ(60KB)がありますから、詳しい挙動についてはこちらをごらんください。ここに全ファイルのアーカイブがあります。MS-Windows95+AN HTTPdの環境でテストしてあります。
不具合や要望がありましたら、私まで連絡してください。このプログラムによるサンプルは、ここにあります。<ダイヤルアップサーバですが、アドレス固定です
たびたびすみません。
c:\windows\tempに「1.0」という 0ファイルとして、出力したいものがHTML形式でありました。
頭に「Content-type :text/html」というのがついていましたが・・・。
なぜ、表示されないのでしょうかね。よくわかりません。
よろしくお願いいたします。
中田さん、こんにちは!
WIN95です。
そして引っかかっているのは、exec("〜"); という部分だと思います。#にすると通りました。
exec部分を通って、gifファイルを作成後、エラーが出ます。
エラーが出なければ、そのgifファイルを表示するHTMLをperlのprint文で書いています。
でも、昨日の夜はどういうわけかうまくいったのですが、今朝になるとまたあの恐るべきError 500と昨日質問したメッセージが出力されます。
お忙しいとは思いますが、どうかよろしくお願いいたします。
エラーが出るたびに再起動するのも大変です。トホホ・・・。
いっつさん、
ちょっと確認できません。
FORM ACTION= でのURL指定の実例を示してもらえると助かります。
あと Netscape で no data なら、parse CGI Output でエラーメッセージが出ると思いますが、それはどうなっていますか?
にっしゃん(さん)へ、
Windowsを再起動してやってみてなおかつこれが出るようでしたら、
WinNTか95か、と、このエラーがどの CGI で発生するかお知らせ下さい。
イワシさん、
これは cat コマンドがないから、"コマンド名が違います"ということですね。
UNIXなら cat は標準ですが、Windows(DOS) では cat は ありませんから。
とりあえず、ということなら cat を type と書きかえればいいはずです。
恒久的には、Windows用 UNIXコマンドを入れるか、cat.bat(中身は type)を作るかでしょう。
artice さん、
これはバグでした。ドキュメントルートがルートディレクトリのとき発生します。
ご指摘ありがとうございます。次の版で修正します。
(次の版は、少々手間取っていますが、次の日曜日を予定しています。)
F91さん、
ユーザ認証は、ユーザ名とパスワードをいれないとアクセスできないようにするものです。
AuthName がわかりにくいかもしれません。
Pathで設定したところにアクセスすると、ブラウザの方で、ユーザ名とパスワードを入力するダイアログボックスが開きます。
そのときに AuthName に指定した文字が表示されます。いわば 認証の名前(ラベル)のようなものです。
アクセスコントロールの例では、ブラウザから、
http://xxx.xxx.xxx.xxx/protected/xxxx.html
とすると、"private に対するユーザ名とパスワードを入れてください"というようなダイアログボックスが現れます。
そこで、たとえばユーザ名に admin と入れ、admin のパスワードを入れると、めでたく /protected/xxxx.html にアクセスできるわけです。
田中さん
引数とは、「C:\home\page\cgi\xxx.pl?arg1+arg2」全体のことです。この桁数が80文字をオーバーすると「Document contains no data」(Netscape)と言われます。
はじめまして。
本当に素晴らしいソフトをありがとうございます。
初心者ですが頑張っています。
さて、質問なのですが、以下のエラーがでますがどうすれば良いですか。
Error 500
Can't rename - can't rename 1.x to stdout.x
よろしくお願いいたします。
<!--#exec cmd="cat ./aaa.txt" -->と記述すると
"コマンドまたはファイル名が違います."のエラーメッセージが出ます。
申し訳ありませんが記述の仕方を忘れてしまいした。教えてください
初めまして。こんな良いプログラムをフリーで公開して頂き、ありがとうございます。さて、どうしても解らないことがあるので質問させてください。
D:\をドキュメントルートに、/でDocRoot\にアクセスするように設定し、D:\に.www_browsableファイルを置いておきます。この状態でブラウザからhttp://127.0.0.1/にアクセスすると、ディレクトリリストが表示されます。
問題は、D:\以下のディレクトリのリストを取るときで、.www_browsableをそれぞれのディレクトリに置いてアクセスしても、permissionがないと言われてしまいます。ドキュメントルート以外のディレクトリリストは表示できないのでしょうか?
どうもはじめまして、F91と言います。
素人なのに、このソフトを使っているのですが。
ユーザ認証の仕方がよくわかりません。
説明も見ましたが全く解りません。
このユーザ認証は、パスワードを設定して
ユーザを限定出来る物なんでしょうか?
わかりやすいようにユーザ認証の仕方を誰か教えて下さい。
かずひろさん、
対応を考え中ではありますが、
perl(.exe)を使っているようでしたら、PerlIS を使ってみてください。PerlIS でうまく動かないようならスクリプトを送ってください。
また、ロックを入れて SingleThread をはずせば速度は改善されるはずですが、ロックについて不明でしたら、これもスクリプトを送ってください。
中田さん、こんばんは。
とても便利で、毎日、使わせて貰ってます。ありがとうございます。
その後、チャットcgiも快調に動作してまいす。
そばにいなくても、固まっていることが無いので、大変嬉しいです。
ただ、以前に書いた、レスポンスが悪くなった件ですが、
やっぱり、動作が遅いです。
チャットcgiで、CPUの負荷率が半分もいかないのです。
せっかくの、CPUパワーを出しきっていない気がします。
素人考えなのですが、もっと、負荷率を上げられたらと思います。
一番気になるのが、負荷率にあまり関係が無いと思うのですが
チャットで何も書かなく、ただ更新したときの動作です。
これを、三・四人でかち合ってしまうと、反応にすごい時間がかかります。
一瞬フリーズしたかと思うくらいです。
テレホ時間に自宅サーバはとても表示が速くて、みんなにも、喜ばれています。
それだけに残念です。
皆さんの書き込みには、この様なものが無いので、
単なる、私のわがままになってしまうのですが、
何か改良は出来ないのでしょうか?
何せ初心者で、チャットcgiに付け足すファイルロックの書式も分からないのです。
このソフトだけでは無理なのでしょうか?
何か、アドバイス頂けたらと思います。よろしくお願いします。
ぴかさん、
まだ私も見当がつきませんが、現象としては、智猫さんの言われるようなことのように思います。
LANやローカルでは大丈夫とのことからすると、同時に複数の完全ではないリクエスト(パケット)が到着することがあやしいかな、と思い始めました。
ただ画像などの出力についてはタイミング調整をしているところもあるので不安がないわけではありません。
IE4のアクティブデスクトップは一応お聞きしましたが、この件では関係はなさそうに思います。
というわけでリクエスト発生器でも作って確認してみますので、しばらくお待ち下さい。
(その後何か情報がありましたらお知らせ下さい)
中田さん、ぴかさんのはブラウザが同時に画像を開くところに原因があるのではないでしょうか。
この辺の処理はサーバにかなりの負担になるそうですが……
あんまりHTTP関連は詳しくないので外してたらすみません。
こんにちは。中田さんさっそくありがとうございます。
(1)外部というのが、ダイヤルアップ接続か、LAN接続か
外部からとはダイヤルアップ接続です。別なPCから自分がLAN接続でアクセスする時は
こけません。(OCNエコです。)
(2)LAN接続ならLANアダプタの型名
(3)Windows95のバージョン(OSR2かどうか)
httpdをインストールしているマシンはOSR2です。
(4)ソフト、特にネットワークがからむもの(PWSやIE4のアクティブデスクトップなど)のインストールの有無
IE4のアクティブデスクトップがはいってます。。
素人考えでも、これが危ないかなって思ってますが。やっぱり関係あるのでしょうか?^^;
他の事でも過去何度もIE4には泣かされてます。。
いろいろその後試してみたのですが、一つ言える事は、画像などがたくさんあるhtmlを
読み込むと落ちるようです。
他、movファイルなどは転送量の多いものにも関わらずOKなんです??
まったく検討が付きません???
お忙しいとこほんとにすみませんが、よろしくお願いします。
いっつさん、
Perlの仕様とは思えませんが、サーバの方のバッファも80バイトのところはないと思うので、不明です。
DOSプロセスの制限でしょうか。。。?
引数というのは xxx.pl?arg1+arg2 の ? 以下の引数という意味でしょうか?
確認してみたいので。
ぴかさん、
期せずしてほぼ同内容のお話がメールでありました。
jpgなどは大丈夫なようですが html へのアクセスで青画面になるそうです。
今のところ見当がつきませんが、
(1)外部というのが、ダイヤルアップ接続か、LAN接続か
(2)LAN接続ならLANアダプタの型名
(3)Windows95のバージョン(OSR2かどうか)
(4)ソフト、特にネットワークがからむもの(PWSやIE4のアクティブデスクトップなど)のインストールの有無
を教えていただけますか?
CGIを呼ぶときに、実行ファイル(perl.exe)への引数(?)が80文字以上になるとエラーになるようです。
これってPerlの仕様でしょうか。
はじめまして。中田さんみなさん。
素晴らしいソフトウェアいつも感激しております。
とても、初歩的な質問なので恐縮ですが・・
実は、外部からHTTPDにアクセスがあると、WIN95が落ちてしまうのです。
負荷が大きくなった時のようです。WIN95の青い警告画面、システムがビジー状態・・・です。
PCのシステムかなと思い、別なPCにインストールして試しても同じです。
(インストールの仕方が悪いのかな^^;)
CGIやSSIの動作はOKです。ローカルでも完璧に動いています。
ただ、外部アクセスがあると、システム負荷が100%に近くなりフリーズしてしまいます。
95の再起動でしか復旧できません。
このような、経験をされている方が、もしいらっしゃったら、どうか対策をお教えください。
よろしくお願いいたします。
使用環境:P2(300MHz)メモリ128M+WIN95 +b7 です。
川野さん、
このメッセージはちょっとわかりません。
jgawkがない、countファイルがない、tmpを他のプロセスで使っている、 いずれもメッセージが違いますね。
count1.bat の
copy tmp count > nul
のところでのエラーだとは思いますが。
せいぜい対策は Windows95 の再起動くらいでしょうか。。。
神無月さん、
よかったです。
アクセス先をどこかで公開されているなら、教えてください。
片松さん、
了解しました。 ありそうなことではあります。
確認の上、対応します。
やった、CGIができるようになりました。
掲示板もチャットもできますが、
SSIのカウンタの動作がうまく動かずに、
サンプルSSIプログラムをうごかすと
カウンタの部分に、「ファイルにアクセスできません。−tmp111」というメッセージが表示され、
リロードしてもカウンタが増えませんが、
どうしたらいいのでしょうか、プログラムの間違いではないと思いますが…。
設定がおかしいのでしょうか。
解決しました。
アドバイスの通り、AutoNatオプションの設定で無事自宅のWebを
公開する事が出来ました。
どうもありがとうございました。
一ヶ月遅れのレスですいません。
>History によると、nphスクリプト および Status: には 0.6 beta 4a から対応しています。
>その後の追加変更でおかしくなっているかもしれません。おかしいようでしたらお知らせ下さい。
やはり、Status は効きません。
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
Status: 204
AnWeb/0.9b7b
とエラーが出てしまいます。
nphスクリプトの方も Status No を変えても
logを見ている限りでは、すべて"Status 200"となっているようです。
なぜかわかりませんが、治りました。
お知らせ
次の版(0.9 beta 7c) は、もう少し時間がかかりそうです。
ひらいさん、
これはわかりませんが、
ナビゲーション取り消しは、オフライン作業の関係かもしれませんね。
ダウンロードされるCGIの拡張子が bat なら MIMEタイプの話でしょうが、pl, cgi だとするとやっぱりわかりません。
IE4.01をいれたんですが、CGIプログラムを実行しようとすると、
「ナビゲーション取り消し」と表示されて、CGIプログラムの出力結果が
ダウンロードされてしまいます。なぜでしょうか。
セキュリティ関係の設定で改善されるのでしょうか?
おっと、嘘を書いてしまった(^_^;;
s/オブジェクト/ソースから得られたオブジェクト/
かわさんへ。
私は排他制御にはsymlink()の代わりにmkdir()を利用しています。
こうすれば、全く同じスクリプト(やオブジェクト)が、Win95でも
unixでも正常に動作します。
ご参考になれば幸いです。
かわさんへの補足。
ロックファイルの方で、close のあと unlink($file) が必要でしたね。
かわさん、
ロックファイルを使う例はさがしてみてください。私も今ちょっとでてこないので。
あらすじは、
while (-f $file) { sleep(1); }
open(FILE, ">$file");
...(処理)...
close(FILE);
というようなことなのですが。
UNIXでもWindows(95)でもという話については、ちょっと前のですが、以下の A.Musha(knu)さんのコメントも参考にしてください。
動いているのが UNIX,Win95,WinNT,PerlIS かで if 文などで場合分けすることもできますが、いずれにしろ、そのまま転送できるようにするにはひと工夫いりますね。
>A.Musha(knu) knu@and.or.jp 1997/08/01 01:20
>
>Win32版Perlでは、flock()はサポートされていません。コマンドラインから実行してみれば、エラーを確認できると思います。
>そこで、UNIXでもWindowsでも動くスクリプトにするためには、「flock(...);」を「eval('flock(...)');」とするか、あるいはPerl5ならば
>
>use Config;
>
>sub _flock(*$) {
>my($glob, $mode) = @_;
>local *HANDLE = $$glob;
>
>$Config{'osname'} =~ /^MSWin/ || flock(HANDLE, $mode);
>}
>
>という関数を作れば、flock()を_flock()に置き換えるだけで問題はなくなります。
ローディストSSさん、
すみません、beta 7 前後のバグで、/cgi-bin の Alias のチェックが保存されないためディレクトリも保存されません。
以下の返答も参照下さい。
>中田昭雄 nakata@st.rim.or.jp 1998/03/02 21:26
>
>かわしまさん、
>/cgi-bin の前のチェックの保存についてはミスがありました。次の版で直します。
>とりあえずはregeditで HKEY_LOCAL_MACHINE\SOFTWARE\AnHTTPd\default\Cgi\Alias の(標準)を "On" に書きかえればチェックした状態
>になります。
中田さん、ご返事有り難うございました。
教えていただきました while (-f lockfile ・・・・ を入れてみたりしましたが、知識がない
私にとってどうもうまくいきませんので、仕方なくlockやflockに関するサブルーチンを
スクリプトからコメントアウトしたらうまくいきました。今CGIのテスト中ですからこれで支障あり
ませんが、完成したらまた元に戻してサーバに転送しようと考えています。
ここで、ひとつ気になることが出てきました。Win95はlockやflockが使えないことなので、
いくら完成版を作って転送しても、Win95を使用している私のPCでは使えないことになるので
しょうか。私のHPはアクセスが少ないですから、lockの心配ないのかもしれませんが。一寸
質問が AN httpd から離れてしまいましたが、この辺がよく分かりませんので、教えていた
だけませんでしょうか。よろしくお願いします。
初めまして。
PersonalWebSerwer等、いろいろなWindows用Webサーバを試していたのですが、
設定がまずいせいかどーもCGIを動かすことができませんでした。(^-^;)
AN HTTPでは難なく動いてて助かってます。
ところで、今beta 7bを使っているのですが、 「cgi-bin」ディレクトリの変更が
できません。beta 6では「Options」「General」でディレクトリの変更ができた
のですが、beta 7bでは設定をを変更しても、AN HTTPを再起動すると元に
戻ってしまいます。
何か設定方法が間違っているのでしょうか。
3月6日(金)のチャットに、おじゃましました!。。。hideさんより、ここを教えて
もらいました。。。
早速、拝見しました。。。ありがとうございます!!。。。
ありがとうございます。
parse #! line のチェックがついていたのではずしたところ、
動きました。
これからもがんばってください。
ひらいさん、
parse #! line のチェックをつけているようならそれをはずしてください。
あとは ExecProg for .pl, .cgi が perl (または jperl) で、perl(jperl)へのパスが通っていれば大丈夫だと思います。
もし、parse #! line を有効にするのであれば、スクリプトの #! 以下を C:\Perl\bin\perl とか perl(jperl)へのフルパスを指定してください。
神無月さん、
外からみた(PPP接続の)IPアドレスとローカルアドレスとをIPアドレス変換テーブルで対応させてやればいいのだと思います。
NAT機能というのでしょうか。。。
MN128-SOHO FAQなどを参考にしてください。特に AutoNAT のところなど。
httpd はローカルアドレスを認識していればいいはずだと思います。httpd にアクセスしてきさえすれば自分のアドレスはなんでもかまわないはずですから。
はじめまして。ひらいというものです。
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
コマンドまたはファイル名が違います.
と、でます。
なぜでしょうか。
コマンドラインからだとうまくいきます。
下のがリストです。
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><head><title>TITLE</title></head><body>BODY</body></html>\n";
はじめまして。
私も自宅でwwwサーバを立ち上げようと思ってるのですが、ちょっと困ってます。
httpdやperlのインストールは完了しローカルでcgiが動く様になったのですが、自宅の通信
環境がISDNで、MN128-SOHOとうルータを使ってます。このルータが、DHCPサーバ機能で
端末に自動的にIPアドレスを割り振る様で、httpdがダイヤルアップ接続でプロバイダから割
り当てられたIPを認識してくれません。
ブラウザのツールで確認すると、ルータ自身はプロバイダのPPP接続で割り振られたIPアドレス
(例えば、132.205.64.0)を認識しているのですが、端末にはローカルなIPアドレスを
(例えば198.164.0.2)を割り当ててしまいます。>httpdはローカル側のIPを認識してます。
ルータに内臓されているHUBで端末を接続しているので、当たり前といえば当たり前かなぁ
と思い、何か方法はないものかとLAN接続を止めてDTE接続に切り替えたり、ルータのDHCP
サーバ機能をOFFにしたりと色々試したのですが、どうしてもhttpdがローカル側のIPアドレス
を認識してしまい、プロバイダのPPPで割り当てられたIPを認識しません。
ちなみにhttpdは、Ver0.9 Beta7のモノを使用しています。
ISDN&ルータ接続でPPPのIPアドレスを端末側に認識させる方法はないでしょうか?
それとも、この様な構成では、自宅wwwサーバ計画は無理なのでしょうか?
初めての質問で長文になってしまい申し訳有りません。
何か良いアドバイスが頂けたら幸いです。
かわさん、
ロックファイルを使うロックの筋書きは
while (-f lockfile) { sleep(1); }
だと思います。
いろいろバリエーションはあるようですがファイルが存在するかどうか調べて、あればなくなるまで待つというのが基本だと思います。
存在しなければ、ロックファイルを作って必要な処理をおこなうわけです。
が、存在しないと判断してロックファイルを作るまでの間に他のプロセスが存在の有無を調べてしまう余地があるので完全なロックにはならない、ということのようです。
しかし実用上はそれで十分という話もあるので、いろいろ試してみて下さい。
いくつかのCGIスクリプトを公開しているサイトで ロックファイルを使っているものはあるようですから。
もちろんそのやり方のものは ANHTTPd で使えるはずです。
桑野さん、
Win95 では、symlink, flock とも使えません。
下の simo さんへのお答えをご覧下さい。
花見さん、
それはよかったです。
PerlIS は 動作をモニタしたい意図があって余計なログを出すままにしてありました。
次の版でエラー以外は出さないようにします。
simoさん、
Perl for Win32 では symlink は使えません。
flock は WinNTでは使えるはずですが、Win95 では使えません。
使えないのは Windowsのシステムの問題です。
ロックファイルを使うファイルロックは WinNT/95 でも使えますが、完全なロックはできないはずです。
で、Win95で完全なファイルロックをしたい場合は、Options/General の SingleThread をチェックしてください。
CGIプロセスまるごとロック(排他制御)します。ただし、そのぶん動作は遅くなります。
以前何度かお世話になりました" かわ"です。おかげさまで、KINOVISをCGIでテストでき、
完成したものをサーバに転送することが出来ました。
そこで、今度は掲示板を今までのレスキューさんのから、KINOBOADSに変えようとして、テストし
ていますが、index.htmlの画面からテストをクリックすると、「システムロックに失敗し
ました。・・・・」が出て進みません。今、「掲示板:きのぼーず」で聞いていまして、
作者から、Win95ではロックできないとの返事を頂きましたが、もうひと方から、ロック
ファイルを作ってみたらというアドバイスを頂きましたのでやってみましたがうまくいき
ません。
そこで、お伺いしたいのですが、どなたか、KINOBOADSをAN httpdでテストをしてうまく
いった方がお見えでしたら、対処方法を教えていただけないでしょうか。アドバイスいた
だいた方がAN httpdではしたことがないとのことなので、こちらで聞くことにしました。
よろしくお願いします。
こんにちは。
昨日、手に入れて早速使ってみたのですが、今まで使っていた掲示板
がそのままでは動作しなかったのです。
あまり詳しくはないので何とも言えないのですが、ファイルロックに
関する記述を削除すると、うまく動作しました。
ということは、ファイルのロックは使えないのでしょうか?
おはようございます、
Version 0.9 beta 7b + PerlIS にしてから、
チャットのほうが非常に安定しています、
すばらしいプログラムを使わせていただき、ありがとうございます。
1つ気になることがあります。
PerlISが、イベントログに大量のログを作ってしまいます、
PerlISが呼び出されるたびにです、
負担がかかるので、外したいのですが、方法はありますか?
ちなみに、OSはNT4.0WSです、
よろしくお願いします。
カウントで良く使うファイルロックは使えるのでしょうか?
レスキューにあるカウンタでsymlinkを使うようなものです。
結城さん、
どうもありがとうございます。
結城さんのページは拝見したことはあります。その時はプログラミング関係をキーワードに検索してたどりついたように思います。
少し前に、基礎編の御本の方も書店で手にとってみました。応用編も楽しみにしております。
こちらこそ、今後ともよろしくお願いいたします。
はじめまして。結城浩と申します。
AN HTTP Server をダウンロードしてすぐにCGIが試せたのでとても感謝しています。
実は私はCGIの入門書を執筆しており、すでに「基礎編」が出版されています。
現在は「応用編」の執筆に追われているところです。
こちらの AN HTTP Server をローカルテストに利用させていただこうと思いました。
すばらしいソフトをフリーとして公開してくださってありがとうございます。
今後ともよろしくお願いいたします。
もしお時間がありましたら、私のページにもご来訪いただけましたらうれしいです。
http://www.st.rim.or.jp/~hyuki/
宣伝めいて恐縮ですが、参考までに本を紹介させてください。
(もしも不適切な内容なら削除ください)
『Perlで作るCGI入門 基礎編』
結城浩著 ソフトバンク(株)刊
ISBN 4-7973-0507-X
中田 昭雄 様
メールありがとうございました!
お返事書かせて頂きました!
追加)
使用環境についてダイヤルアップ接続、個人で使用しています。
よろしくお願い致しますm(__)m
中田さん、お返事、ありがとうございます。
なるほど、そうですか……でも、抜け道が無いわけではないので、とり
あえず、現状でもOKです。(^^)
あと、%ENVの方のプロセスの関係も、言われてみればそうですね。
httpdがSSIを処理するのにも、わざわざ、自分のプロセスの環境変数を
参照せずに、直接に渡しちゃえばよいわけですよね……。(^^;;
川野さん、
Netscape で no data でしたら、Options/General で parse CGI Output をチェックして再度やってみてください。
Error 500 で、それなりのエラーメッセージが出てくると思います。
おかへさん、高木さん、
よろしくお願いします。何かありましたら聞いてください。
ほたるさん、
メールで詳細はお聞きしましたが、Perlスクリプトがうまく動かないという話なら設定でなんとかなるはずです。
かすいさん、
@ARGV については、現状では AnHTTPd 上の ISAPI の仕様です。
PerlIS に対しては PATH_TRANSLATED にスクリプトファイル名を入れて実行させます。現在のところ @ARGV へのセットの仕方がわからないでいます。
PerlIS の仕様でできないのかもしれませんが、できないと断言できるほどつめてはいない、というのが現状です。
%ENV の方は、ISAPI の仕様で、環境変数は GetServerVariable() で必要な時に一つずつ取得するはずです。
perl.exe の時は perl.exeのプロセスの環境領域が確保されるのだと思いますが、PerlIS では独自のプロセスではないので。
まあ、こちらも、やりようがないとは言いきれませんけど。
石橋さん、
LANにしたらLANの外からみえないという意味でしょうか?
だとしたら、LANと外部とのつながりかたの問題のようにも思えますが。。。
LANと外との間にファイアウォールがあるとかそういう話とは違う話でしょうか?
TCP/IPをきちんと設定したらHTTPDは動きました。
コントロールパネルのネットワークの所はほとんどいじったことが無いので、
盲点でした…。どうもありがとうございます。そしていざCGIをやろうと思ったら。
document contains no dataとかエラーが出てしまって…うまくいかないなぁ。
CGIのパスは設定しているんだけど…というか勝手に設定されていた。
これも何処かの設定が悪いのだろうけど、気長に探してみよう。
誰か同じエラーが出て、解決した人が居たら、教えてもらえますか?
もうちょっと、いじっくっていたら、どうも、PerlISって、%ENVの動作も
変なようですね。(^^;;
初期状態では、PERLXS=PerlISしか入ってなくて、$ENV{'HTTP_USER_AGENT'}
と直接呼び出すと、その呼び出したものも%ENVの要素として加わるみたいです。
# うちの、古いのかなぁ……。<PW32I315.EXE / PLISI315.EXE
WWWサーバ、CGI、Perlの勉強に使わせていただきます。
中田さん、ありがとうございます。
今後もよろしくお願いします。
はじめまして。CGI設置に関して、卓上テストしようと思い、HTTPDを使わせて
頂いております。
ありがとうございましたm(_ _)m
中田 昭雄 様 追伸)
CGIサンプルとしてOIDONさん(でしたよね(^^;)の
hello.cgiで試させてもらったのですが、それでも同じエラー
が出てしまいます。(^^;
中田 昭雄 様、早速のレスありがとうございます!
おっしゃられた通り、設定を直し、WIN95を
再起動して繋いでみましたが、同じくERROR 500
が出てしまいます(^^;
htmlやテストコーナーのテストは上手く動作して
いるのですが(^^;
お手数をおかけしますが、よろしくお願いします。
久しぶりに書き込みします。(^^;;
えっと、以前から思ってたことなのですが……
うちの伝言板では、「/dengon.cgi?owner.room」というように、
どのような操作を行うにも必ずオプションパラメータを必要とします。
ところが、PerlISだと、@ARGVには何も設定されませんよね。(^^;;
とりあえず今は、GETメソッドは使ってないこともあって、なんとなく
いろいろと気持ちの悪い代入ですが、下のようにしてしのいでます。
@ARGV= (@ARGV, split(/\+/, $ENV{'QUERY_STRING'});
それで、PerlISで、この@ARGVが無効なこと、つまり、PerlISにオプション
が渡ってないのは、ISAPI、あるいはPerlISの仕様なのでしょうか?
単独のpcではちゃんとできたのに LANにしたら外部から見えなくなって
いるようです。どうしてでしょうか?設定が変るのでしょうか?
LANで繋いでるPCからは見えるのできがつきませんでした(;^_^A アセアセ・・・
ほたるさんへ追伸。
Win95を再起動しても CGIサンプルで size of stdout is NULL になるようならお知らせ下さい。
かわしまさん、
/cgi-bin の前のチェックの保存についてはミスがありました。次の版で直します。
とりあえずはregeditで HKEY_LOCAL_MACHINE\SOFTWARE\AnHTTPd\default\Cgi\Alias の(標準)を "On" に書きかえればチェックした状態になります。
木村さん、
ハングについては、(メールで書きましたが、)デッドロックがらみかと思われます。
ソースを見直してみます。
ほたるさん、
CGIサンプルの 単純なテストでも size of stdout is NULL になるのでしょうか?
だとすると、Win95 の再起動くらいしか思いつきません。
jcode.pl は j のつかない perl なら使えます。
ExecProg for .pl, .cgi を jperl ではなく perl にしてください。
.htaccess は AnHTTPd の場合は、必要ありません。オプションで設定するようになっています。
中田様:
>一応 errors.log にエラー番号が出るはずなのでそれらしいところを教えていただけますか?
起動時に、オプションのcgi-binへのエイリアスのチェックがはずれて、ファイルパスが初期
値(?)に戻ってしまうだけなので。
その状態でアクセスすると、
--
Mon Mar 02 13:02:44 1998 Error Response 404 for /cgi-bin/chat/chat.pl
--
ってなエラーログが残るだけです。
いまは立ち上げるたびにオプションを設定し直すという原始的な手段でしのいでいます。
中田様へ
お世話になってます。CGI PROCESS ERRだったかな?が表示されてハングしました。
errors.logは下記の通りです。
よろしくお願い致します。
Mon Mar 02 03:41:20 1998 Warning: select() timeout when recv()
Mon Mar 02 03:41:20 1998 Warning: select() timeout when recv()
Mon Mar 02 03:47:50 1998 Warning: IncomingDataBuffer is NULL in ClientRead() for Thread 0
Mon Mar 02 03:47:53 1998 Warning: IncomingDataBuffer is NULL in ClientRead() for Thread 0
Mon Mar 02 03:48:06 1998 Warning: IncomingDataBuffer is NULL in ClientRead() for Thread 0
Mon Mar 02 03:52:32 1998 Error: Can't send response header (0) for Thread 1 (ID = -47403001) with errorcode 10022 for socket 45680
Mon Mar 02 03:52:33 1998 Warning: IncomingDataBuffer is NULL in ClientRead() for Thread 2
Mon Mar 02 03:52:33 1998 Warning: connection reset during recv() in ClientRead() for Thread 1 with errorcode 10054
Mon Mar 02 03:52:33 1998 Warning: connection reset during recv() in ClientRead() for Thread 5 with errorcode 10054
Mon Mar 02 03:52:33 1998 Warning: IncomingDataBuffer is NULL in ClientRead() for Thread 3
Mon Mar 02 03:52:33 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 03:52:33 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 03:52:33 1998 Error: Can't send response header (0) for Thread 4 (ID = -47404389) with errorcode 10022 for socket 45716
Mon Mar 02 04:01:50 1998 Warning: connection reset during recv() in ClientRead() for Thread 2 with errorcode 10054
Mon Mar 02 04:01:51 1998 Warning: connection reset during recv() in ClientRead() for Thread 3 with errorcode 10054
Mon Mar 02 04:01:51 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 04:01:51 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 04:01:53 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 04:01:53 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 04:05:13 1998 Error Response 404 for /main.htm
Mon Mar 02 04:16:55 1998 Warning: connection reset during recv() in ClientRead() for Thread 1 with errorcode 10054
Mon Mar 02 04:16:55 1998 Error: Can't send response header (0) for Thread 2 (ID = -47394761) with errorcode 10022 for socket 45864
Mon Mar 02 04:16:56 1998 Warning: IncomingDataBuffer is NULL in ClientRead() for Thread 3
Mon Mar 02 04:16:56 1998 Error: Can't send response header (0) for Thread 4 (ID = -47395745) with errorcode 10022 for socket 45892
Mon Mar 02 04:19:46 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 04:19:46 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 04:31:28 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 04:31:28 1998 Client Abort (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 02 04:31:41 1998 Warning: IncomingDataBuffer is NULL in ClientRead() for Thread 0
Mon Mar 02 04:35:49 1998 Error: Can't send response header (0) for Thread 2 (ID = -47339569) with errorcode 10022 for socket 46196
Mon Mar 02 04:35:49 1998 Error: Can't send response header (0) for Thread 5 (ID = -47337665) with errorcode 10022 for socket 46200
こんばんは、はじめまして!
早速使わせて頂いたのですが、どれだけ試してみてもCGIのテストが
ERROR 500 CGI Error - size of stdout is NULLというのが出ます(^^;
使用機種はWIN95 ブラウザ:ネスケ4.04です。
その他のサンプルテストページではちゃんと動作しているのでしょうが、
どうしてでしょうか?(^^;
またjcode.plが使用できないとありますが、その場合、
require 'jcode pl'の部分はなにか変更はいるのでしょうか?
あと.htaccessも同じディレクトリに入れておくのでしょうか?
全くの初心者なので、どうかご存知の方は教えてくださると嬉しいです。m(__)m
お忙しいところすみませんでした。
中田様へ
早速の対応大変ありがとうございます。
自分も長時間使っていますがサーバは元気なようです。
たまーにHP内の画像を取りこぼしてくる事がありますが、回線の混雑なのかなぁーなんて
思ってます。あと前回まではサーバを起動しておくとリソースが少しづつ減っていたの
ですが、今回はその症状も見られないようです。
ちなみにフリーなOmniも利用してみたのですが、これはリソースがバクバク消耗していくようです。自分の場合は一日何回かWinをリブートしないといけなかったのでAN HTTPのおかげで
管理が楽になります。大変すばらしいソフトをありがとうございます。m(_ _)m
かずひろさん、
いろいろ言っていただくのは一向にかまいません。ご遠慮なく。(ただし、対応できるとは限りません)
短時間にリロードするリクエストがあるとそのうちのいくつかのリクエストは中身がなくなるのに中身をひたすら待ち続ける(スレッドが生き続ける)ためにCPU負荷が100%になっていたようです。
0.9 beta 7b では、リクエストの中身がないことがわかった時点でその接続スレッドの終了処理をするため時間がかかるようになってしまったかもしれません。
スレッドの切り替えのタイミングを変えることで対処できるかもしれませんので、考えてみます。
なお、CGI が perl なら、NTであれば flock が使えるでしょうから、SingleThread のチェックをはずせば(チェックしてあればの話ですが)速度は改善されると思います。
また、もし perl.exe を使っているのであれば、PerlIS を使うようにすることでも速くなるとは思います。多少スクリプトに手を入れる必要があるかもしれませんが。
中田さん、こんにちは。
早速、修正版を作っていただきありがとうございます。
お蔭様でサーバを長時間立ち上げていてもCPUが100%になったままの状態がなくなりました。
ただ、私の気のせいかも知れないのですが、チャットなどのcgiを使うと以前より反応が遅いような
気がします。何度か利用者からも指摘されました。何か原因があるのでしょうか?
なにせ、初心者なもので、次から次へとこんな質問ばかりで失礼かとは思うのですが
許してください。どうぞ、これからもよろしくお願いいたします。