エスねこです。ゴブサタしてます。(^^;
年末の休みを利用して WinSock にドップリ浸かってます。
やっとマルチスレッドで UDP の受信待機ができるようになったです。
スレッドは当面、受信部にしか使用しないので排他処理とかはいらないんですが、
中田さんのサーバの場合は、同期処理をとっておられるのでしょうか
(そこにもハマるとホントに正月休みがなくなっちゃうんですけどね… (T_T)ゞ)。
はじめまして、CGIに興味をもち3日目です。
ANHTTPはすごいですね。自機PC9821xtWIN95がHTTPサーバに簡単になってしまうのですから、約1年前にIP接続でサーバを立ち上げようとした時には、外国のjavaベースのソフトをダウンロードしてためしたのですが、うまく行かず止めていました。ところが、CGIの事を調べている最中にANHTTPを知りインストール、アイコンクリック一発でHTTPサーバが立ち上がりました。すごい。
ところで、sendmailが使えないとのことでWindMailを代わりに使ったのですが、ウェブレスキューのWebFORMVer2.0のcgiプログラムで、
$sendmail='...URL.../windmail' としてもメール送信しましたとでるが、実際には目的のアドレスに届いた形跡はありません。WindMailはinteractiveModeでは送信され目的のアドレスに届きます.WindMailはWebFORMVer2.0では使えないのでしょうか....
プログラムの書き方が正しくないのでしょうか...
中田さん。こんにちは。
今年は、いろいろご指導して頂き有り難うございました。
また、2回も掲示板を壊してしまい、すみませんでした。
来年も、少しづつですが、やってみようと思っています。
よろしくお願いします。
では、良いお年を。
taku さん、
このエラーは前に一度だけ話が出ましたが、そのときはよくわかりませんでした。
今回あらためて調べてみたところ、
環境変数TEMP(あるいはTMP)で指定したフォルダに作られる一時ファイル stdin.0 がオープンされたままでいると、この Broken Pipe になることがわかりました。
stdin. のあとの数字は 0 から始まるスレッド番号ですので、stdin.1, stdin.2 ... の場合もあります。
対策は、いずれかのプロセスがこの一時ファイルをオープンしたままなので、一度 Windows95 を終了して再起動してから、そのファイルを削除する必要があるようです。
オープンしたプロセスがそのまま終了している可能性もあるので、再起動するのが安全だと思います。
原因としては、CGIが標準入力を待ち続けているのをなんらかの形で強制終了した場合にそうなるということは推測できます。
たとえば、GETメソッドで動くCGIで標準入力を待ってしまう場合などです。
いずれにしろ、この一時ファイルの使い方は AnHTTPd 特有のことなので、エラーメッセージから以上のことを推測することは難しいですね。
このようなことが起きないように、できればAnHTTPd側での対策を考えたいと思います。
RAOHさん、
dbmopen( ) は、私は使ってみたことがないのでよくわかりませんが、少なくとも同じように書いてみて dbmopen( ) でエラーにはなりませんでした。
DOSプロンプトで perl xxx.cgi としてやってみただけですが。
perl のバージョンの問題でなければ、ソースの5行目までを見せていただく方がいいかもしれません。
こんにちは。
この前から
CGI Error - can't exec "F:\TOOLS\COMM\95\HTTPD095\cgi-bin\test.bat ", errorcode = 20, Broken pipe
とでます。
このエラーばかりでてむかついています。
エラーログには Can't create file for stdin in spawnProcess().となっています。
どうしたら直りますか。
できればエラーの解決方法をどっかに簡単でもいいので載っけてくれませんか。
エラーメッセージとして、
CGI Output Message:
AnyDBM_File doesn't define a TIEHASH method at C:\HOMEPAGE\mopage\mvi\syukei.cgi line 6
と出ます。
ソースは、
dbmopen(%DENIRO, 'deniro' ,0666); (<====6行目)
$FROM{$deniro}++;
dbmclose(%DENIRO);
としています。
フォームから、セレクトタグをつかい、例えば、
<SELECT NAME="deniro">
<OPTION VALUE="1">タクシー・ドライバ
とcgiに送っているのですが。
RAOHさん、
Perl5 for Win32 で、dbmopen( ) などはサポートされていると思います。
どのような操作のときエラーメッセージの表示がされるのでしょうか?
あんどぉさん、
Options/General で Parse CGI Output をチェックして、出てくる(エラー)メッセージをお知らせください。
なお、もし jcode.pl の問題だったら、ExecProg for .pl, .cgi を jperl から perl に変えることによって解決できるかもしれません。
こんにちは、RAOHと申します。
AN HTTPを利用させてもらい、PERLを初めて早数ヶ月になりますが、今アンケート集計用の
プログラムを作成しているのですが、DBM を使い処理したのですが、perl.exeだけでは、
動かないのです。エラーとして”このマシンにはDBMは入っていない”みたいなエラー表示
がでるのですが。
DBMの処理はperl.exeだけではだめなのでしょうか?
はじめまして、あんどぉともうします。
自宅で手軽にCGIの動作チェックや勉強ができると聞いて、早速ダウンロードして使いはじめました。
ところが、CGIがうまく作動してくれません。
おいどんさんという人が書いている設置解説を元にやってみたのですが、
掲示板のスクリプトを動かそうとすると、NN4.04で"ドキュメントにデータが含まれていません"というエラーメッセージが出てしまいます。
jcode.plをいろんなバージョンで試したりしてみましたが、だめでした。
また、SSIもうまくいきませんでした。
レスキューさんが配布しているアクセスカウンタですが、コマンドまたはファイル名が違いますとエラーが出てしまいます。
パスの設定はちゃんと確認したのですが...。
なにをどう報告すればいいのか分かりませんが、よろしければアドバイスをお願いします。
諏訪さん、どうも。
あのMLには、勧められて、12/4に参加の申し込みをしました。
AnHTTPd に関係することには(わかる限り)答えようと思っています。
中田さん。こんにちは。今月初めころ、お世話になった諏訪といいます。
SSI、CGI 等やってます。OK です。今は、年末で、本業が忙しく、
こちらは、一休みです。
ところで、先日、林愛一郎さんの CGI ML に中田さんが登場されたのを見て、
びっくりしました。おおもの、中田博士、いよいよ、CGI ML にも登場か?
と思いつつ、このボードを拝見しました。
以上。ご報告です。
失礼します。
まさおさん、
except POST については、PerlIS の POSTでの動作を変更したときに標準入力を読み込まないようにしてしまったのかもしれません。
確認の上、直します。
いつもhttpdを利用させていただいています。
このような便利なソフトを公開してくださって本当にありがとうございます。
ちょっと気になる動作があるのでご報告します。
perlIS.dllを有効にして、POSTを除くように設定すると
POSTのデータが送られなくなってしまいます。
この「except POST」というオプションを指定したときの
POSTでの送信はperlIS.dllを有効にしないことと同じ事ですよね。
beta 5c の1つ前のバージョンでは正常に送信されていました。
うらああ.
中田さん,できました.家のパソコンでHTTP-Dが正常に起動しました.
ご指摘どおり,オンライン接続を設定したらできました.
ありがとうございます.これからもよろしくお願いします.
幸いにかどうか、ここではあまり動作がおかしいという話は出ていませんが、
メールでは、ユーザ認証がおかしい、というお知らせをいただいていまして調べています。
また、NTでのサービスに対応させるために手を入れています。
その他、おすすめにより、CGIメーリングリストに参加しました。
以上近況のご報告です。
志津田さん、
使ってみて何かありましたらなんでもどうぞ。
三笠さん、どうもありがとうございます。
特にISAPIについてはどうかな、と思っていましたので。
なるみさん、
いかがでしょうか?疑問の点などありましたらご遠慮なくどうぞ。
ささきさん、
よろしければ、うまく動くようにするためのポイントなど書いていただけるとありがたいと思います。
中田様
自分のPCでCGIをテストする環境が欲しくてさがしていましたら
このhttpd を見つけることができました。
これから使わせていただきます。大変ありがとうございます。
はじめまして、中田様。
AN HTTPD、使用しております。
CGIもPerlも全くの素人でしたが、3月以来、本格的に取り組み、
現在では検索用のScriptも書けるようになりました。7月頃に、
このAN HTTPDを知り、10月にCGIがテストできるようにしました。
Version0.9beta5cで、ISAPIへの対応により、NTで、Scriptが、
高速で動作するようになったので、またまた感謝です。CGIを使っ
たWeb pageは、私のサイトには今のところありませんが、他の
サイトで活躍しております。これほど便利で設定が簡単なSoft、
ゲストブックとコメント集が大変参考になりましたが、を使わさせ
て頂ながら、お礼が遅れました。
それでは今後ともよろしくお願いします。
ダウンロードしました。ありがとうございます。これから勉強します。
中田様、突然ですが、どうも有り難うございました。
私は佐々木といいます。以前ここでhttpdを頂いた者です。
あれから散々苦労はしましたが、私のマシンの中でも現在SSI,CGIが動いてます。
完全な文科系の人間でPCの知識もほとんどない私がよくできたなぁなんて思ってます。
これもひとえに、このHPと、その他色々なHPのお手伝いのたまものです。
初めてまともに動いたときは感動しました。なんせずっと500エラーや
Content-typeが読めない、などという悲しいメッセージばかりだったので・・・。
でも今はカウンタ・掲示板・チャットなどがちゃんと動作しています。
というわけで、失礼します。これからも頑張ってください。では。
うららさん、
Netscape では オンラインにする
IE4.0 では 接続のオプションで「LANを使用してインターネットに接続」にしておいて、オンラインにする
のだったと思います。
AnHTTPdは一応サーバですからオンライン状態でないとアクセスできないようです。
教えてください.
httpd095c.exeをダウンロード・インストールし,「AnHTTPd設定
法」のとおりに設定しました.ところが,ローカルPCのHPに
アクセスできません.
例えば,http://127.0.0.1/~MyWWWとアドレスを入力すると
「オフラインのため,NetScapeはネットワークに接続できませんでし
た」と表示されてしまいます.IE40を使用した場合,「要求された
このURLはオフラインでは接続できません」と表示されます.
環境は「Windows95でIE40,NetScape両方がインストールされ
ている」状況です.hostsファイルもhosts.samからコピーして作成し,
127.0.0.1 localhost が定義されていることを確認しました.
どうすればよいのでしょう????
ありがとうございました。きちんと動作しました。
結局PERLをきちんとフルパスで指定すればよかったのですね!
ご指導ありがとうございます
何か困ったらまた書きます。
謝謝了
中田様 サポートありがとうございました
ローカルでは
コンピュータ名
127.0.0.1
localhost
でhttpdが使えるようになりまいた。
マイクロソフトのCchatで会った人にたのんでIPアドレス
でanHTTPDをひらいてもらってCGIのちゃと試験しました
私のHTTPDのアイコンが稲妻フラッシュしたときは感激しました
どうもありがとうございました
OCNにはいって固定のIPアドレスもらえたらなーと思う
このごろです。
きめらさん、
そうですね。 #exec cmd を除くオプションもいいかもしれません。
そのほかにも、 perlIS では #exec cmd="test.pl arg1 arg2" なども、ARGV[0]等にいれることはできませんし。
もう少し perlIS を調べてみてから考えてみようと思います。
>そう意図していたわけではないのですが、現状では仕様です。
>といいますか、PerlIS の仕様かな、と思っています。
あらら、そうなんですか〜。
perlISの仕様はちょっと解らないです‥‥ごめんなさい(;_;)
互換性をとるのに、"except POST"のように、#exec cmdではperlISを使用しない
オプションを用意するというのはどうでしょうか?
#exec cmdのときに、perl.exeを明示的に書けば済む話なんですが‥‥(^^;
天栄劉星さん、
size of stdout is NULL の対策は、
ExecProg for .pl, .cgi のところを単に perl でなくフルパスで、C:\Perl\bin\perl.exe としてみてください。
もし、jperl.exe なら perl.exe にしてください。
Error 404 の Not found の方は、実際にファイルがないということですが、
実際に wwwbbs.cgi が C:\httpd\public_html\cgi-bin にあるのかどうか確認してください。
今日は、perlをリインストールしたら今度は下のようなメッセージが現れました
分からないです、ぼくばっかり(T_T)、お願いします
Error 500
CGI Error - size of stdout is NULL
CGIテスト用に使わせていただきます。
さていきなりサンプルのCGIを実行しようとしたところ下記のようなエラーが出ました
添付されたカウンタのCGIはリロードでカウントアップされます
PERLはC:\PERLにあるんですけど分かりません。教えてください
Error 404
Not found - can't find cgi script or executable C:\httpd\public_html\cgi-bin\wwwbbs.cgi
きめらさん、
そう意図していたわけではないのですが、現状では仕様です。
といいますか、PerlIS の仕様かな、と思っています。
PerlISを動かすときに特にカレントディレクトリを変えているわけではないのですが、そうなってしまいます。
PerlIS は、PATH_TRANSLATED にセットされたスクリプトを読み込むようなのですが、ワーキングディレクトリをセットする変数がみあたりません。
httpd と同じプロセスとして動くので勝手にディレクトリを変えられると困るのですが。。。
できる限り perl.exe の場合と同じように動くようにしたいのですが、ディレクトリに関してはちょっとどうすればいいか思案中というところです。
PerlIS の仕様についてはあまり出回っていないようなのですが何かご存知でしたら教えてください。
なお、perl.exe で動かすときは別プロセスなので、perl.exe のプロセスのワーキングディレクトリを変更しています(プロセスを起動するので時間がかかるわけですが)。
httpd 自体は DocumentRoot をカレントディレクトリとして動いているはずです。
AN HTTPD、CGI/SSIのテストに使わせていただいております。
とっても助かっています(^^)
さて‥‥。
どうもperlISを有効にしたとき、#exec cmd="‥‥"実行時のカレントディレクトリ位置が
perlIS未使用時と違うようです。
具体的には‥‥
A:perlISを有効にした状態で、#exec cmd="./test.pl"
→カレントディレクトリ= test.plのあるディレクトリ
B:perlISを無効にした状態で、#exec cmd="./test.pl"
又は、#exec cmd="perl ./test.pl"といった形で実行。
→カレントディレクトリ= #execを記述したhtmlのあるディレクトリ
以上、チェックしていただけると幸いです‥‥仕様でしたらすみません(^^;
ちなみに、わたしの使っているプロバイダのサーバもBの動作をします。
横井さん、
IPアドレスで、http://xxx.xxx.xxx.xxx/ でももちろんいいわけですが、
ホスト名を知りたいということであれば、下のような gethost.pl を作って、
perl gethost.pl xxx.xxx.xxx.xxx
とすれば、ホスト名を出すことができます。
----- gethost.pl ------------------
$ipaddr = $ARGV[0];
$hostname = gethostbyaddr(pack('C4',split(/\./,$ipaddr)),2) || $ipaddr;
print "hostname is $hostname\n";
--------------------------------
ただし、DNSを検索にいきますから(登録されていなかったりして)ホスト名がわからないときはIPアドレスそのままになります。
また、自分のホームページがあってCGIが使えるなら、$REMOTE_HOST を表示するようにしておけばそれで知ることもできます。
その他、AnHTTPd で Get REMOTE_HOST が Always か CGI/SSI にしてあれば、
IPアドレスでアクセスして $REMOTE_HOST を表示するCGIを動かせばそれでもいいはずです。
An Httpd 0.9beta5cをダウンロードしました。
無事SSIで#exec cgiを使って[=]に引数を書いた場合に無事動作するように
なりました。v(^ ^)v
でもうちのプロバイダのところだと、まだ動作しません。(; ;)
プロバイダが変なのかなぁ・・・
お忙しい中、バージョンアップお疲れ様でした。
はじめまして
anHTTPDつかわさせてもらってます
CGIのテストができてうれしくおもってます
たいへんありがとうございます
変な質問ですが
インターネットに接続してan HTTPDを起動して
そのあとどんなURLを打ち込めば自分のページがみれるんでしょうか?
winipcfg.exeで調べたIPアドレスまではわかるのですが?
その後のURLがわかりません
中田さんへ。
AN httpのおかげでとうとうCGIを使った掲示板を
ホームページに持つ事ができました。CGIサポート
予定のプロバイダがなかなかサポートを開始せず結局
CGIを使えるプロバイダに乗り換えました。
掲示板だけではなくもっと色々なCGI、SSIの使い
方を学んでいきたいと思っています。
今後ともよろしくお願いします。まずは御礼まで。
中田さんへ。こんにちは。
すぐ下の、コメントですが、“うーん。参りました。とても、難しいです。”
と書きましたが、中田さんのご指導どうりやりました。
AN HTTP では、OKでした。できました。
有り難うございました。
中田さん、こんばんは。お世話になっています。
>MiniBBS 7.6c はやっぱり ちゃんと削除もできました。
>削除モードの画面にならないのでしょうか?
削除モードの画面になりません。
>なお、PerlIS で使用するには、
>このスクリプトは Location: ヘッダの出力を使っているので、sub regist の print "Set->Cookie: ..."; の前に、
> if ($ENV{'PERLXS'} eq 'PerlIS') { print "HTTP/1.0 302 Found\n"; }
>などを入れてやる必要があります。
うーん。参りました。とても、難しいです。
と言う事は、僕のところのサーバでも、削除が出来るわけですね。
以前、プロバイダの人が、出来ない、と言ったので、とても感激です。
このスクリプトは、本来は、何を対象にしているのでしょうね。
忙しいところ、有り難うございました。
失礼します。
httpd095c.zipさっそく、ダウンロードしました。でわ〜(^^)/~~
皆様へ
Version 0.9 beta 5c は、Help などでの表示は beta 5b のままでした。
httpd.exe のタイムスタンプが 97/12/6 のものは beta 5c ということでご了解願います。
諏訪さん、
MiniBBS 7.6c はやっぱり ちゃんと削除もできました。削除モードの画面にならないのでしょうか?
あるいは、パスワード変更がうまくいかないのでしょうか?
なお、PerlIS で使用するには、
このスクリプトは Location: ヘッダの出力を使っているので、sub regist の print "Set-Cookie: ..."; の前に、
if ($ENV{'PERLXS'} eq 'PerlIS') {
print "HTTP/1.0 302 Found\n";
} などを入れてやる必要があります。
R.Satoさん、ページ開設おめでとうございます。
(しりとりというのは英語圏にもあるんでしょうか。。? )
諏訪さん、
MiniBBS 7.6c をやってみましたが、perl.exe で動かす限りでは一見問題はなさそうですが、もう少しやってみます。
crypt( ) を使っているようですが、これは 8.5 でも使っていますし。。
ただ、PerlIS では書き込みがうまくいかないようなので、あわせてもう少し調べますね。
中島さん、
NTですね?
ExecProg for .pl, .cgi のところをフルパス(C:\Perl\bin\perl.exeとか)にしてみてください。
jcode.pl を使っているなら、jperl でなく perl を、というところですが、おそらく require 'jcode.pl' はスクリプト中にないと思いますので。
以上の話とは違うようなら NT, perl のバージョンと、スクリプトの中身を教えてください。
おかげさまで、ホームページを開設することができました。
ありがとうございました。
機会があれば、またどこかのページ、もしくは、下記のページでお会いしましょう。
http://www.hi-ho.ne.jp/jikh23472rs/
使わしてもらってますっm(__)m
初歩的な質問かどうかもわからないのですが・・
HELLO WORLDのCGIスクリプトを実行すると
Error 500
CGI Error - size of stdout is NULL
とエラーが出てしまいます。。
なにかお気づきの点がありましたら、
教えてくださいっ。
諏訪さん、
MiniBBS 7.6C の方は、みてみないとわかりませんが、
パスワードがらみでは UNIX サーバで標準的な htpasswd とかを使っているすると、プロバイダのサーバによって、またあるいは ANHTTPd ではうまく動かないこともあるのではないかと思います。
7.6Cというのがみあたらないので、送ってもらえば見てみますけど。
"AN" は、不定冠詞の "an" か、"another" のことだと思ってください。 あくまでも偶然に私のイニシャルとも一致しますが。
ここでのタグ使用については、スクリプトソースなどをカットアンドペーストで入れるとそうなってしまいますから、アンカーのタグ以外は < , > に変える方がいいかもしれませんね。
いちいち書き換えるのも面倒でしょうし。 対応を考えます。
(このあたりは、書き込みを処理するスクリプトでどう扱うかを決めるので、サーバには依存しません。)
中田さん、みなさん、すみません。
昨日に続き、また、タグのミスをやってしまい、ご迷惑をおかけしました。
今後は、タグを含む怪しいものは、AN HTTP で、チェックしてから投稿するようにしようと思います。
失礼します。
中田さん、有り難うございました。
><H2>Hello! WORLD</H2> の終了タグ</H2> が <H2> になっていたた
その通りです。間違えました。分かって良かったです。めったに間違えないですけど。
>タグ自体を表示させたいときは、書き込むときに < , > を使ってください。
はい。
=== 次の結果報告 ===
WEB 裏技の MiniBBS 7.6C をやってみました。8.5 との違いは、パスワードが暗号化される点です。投稿は、問題ないですが、記事の削除が出来ません。削除するとき、パスワードを入力しますが、最初に入力したものと照合出来ないようです。
僕のところのサーバも、できません。こちらのPC98 がハングアップします。サーバの方は、どうなっているのか分かりませんが。
AN HTTP は、パスワード再入力画面へいき、パスワード再入力後、投稿画面になります。
=== AN HTTP について ===
AN HTTP の AN は、Akio Nakata の AN だったんですね。今気が付きました。
では、失礼します。
>中田さん
ありがとうございました。しばらくはレジストリで設定いじって
しのぐことにします。
諏訪さん、
前の諏訪さんの書き込みでは、<H2>Hello! WORLD</H2> の終了タグ</H2> が <H2> になっていたため以降の文字が全部大きくなってしまったようです。
タグ自体を表示させたいときは、書き込むときに < , > を使ってください。
(で、念のためこの部分をソース表示で見ていただければ。)
sl,bさん、
GetRemoteHost を Never にする、レジストリ設定は、
\HKEY_LOCAL_MACHINE\SOFTWARE\AnHTTPd\default の下の2つのキー
NoRemoteHost "On"
RemoteHost "Off"
としてください。
中田さん、本当に有り難うございました。
>hello.cgi については、最初と最後の -------- の行が hello.cgi にそのままはいってい
>るのではないでしょうか?
おっしゃる通りでした。Perl は、バス行から始める事を忘れていました。
>過去の書き込みを flock で検索してもらえば、代替手段も出ていたと思います。
これから、やってみます。
>なお、ここの表示については(ご覧の通り)直しました。
有り難うございました。びっくりしました。
タグが使えるようになっていたのでしょうか。
早速、MiniBBS8.5を使ってローカル(AN HTTP)で、テストをしました。タグ OK だと、同じところから、巨大文字になりますが、原因が分かりません。特定の文字をタグと判定するのだろうと思いますが。
データを見ても、どこを直せば、正常な文字に戻るのか、分かりません。タグ不可にしても、一度巨大化した文字は戻りません。
もし、よろしければ、この場をお借りして、その辺を指導して頂けませんでしょうか。
宜しくお願いします。
失礼します。
>レジストリキーの値を("On" を "Off" に、とか)手動で変更することはできるでしょうか?
レジストリをいじることは何とか出来るので、GetRemotehostをNeverに
したときの値を教えていただけますか?
こんにちは。
出口さん、メガリスさん、レスありがとうございます。
どうやらDLはあきらめて本を探したほうが早そうですね。
さっそく探しに行ってきます。
どうもありがとうございました。
あとPlISi313.exeがDLできました。
なぜ、この前はできなかったんだろ。
では失礼しました。
中田さん、こんばんは。
>でもメガリスさんも よく2回目に test.pl だけで実行してみたものだ、と感心してしまいました。
>
いやぁ、おかしいな?と思ってSSIの部分をコピーして編集して使っていたら
たまたまコピーしたところをコメント化するのを忘れて・・・
そしたら気がついたというわけです。(^^;
>急いで修正版を出したいところですが、ISAPI まわりに手を加えている途中なので区切りをつけてから
>になります。週末くらいと思ってください。
私もSSIの勉強中ですし、ISAPIのほうも気になっているので、気長に待って
ます。
諏訪さん、
hello.cgi については、最初と最後の -------- の行が hello.cgi にそのままはいっているのではないでしょうか?
中身の3行だけにしてください。
flock はメッセージ通りで Windows95 では使えませんから、これはどうしようもありません。
過去の書き込みを flock で検索してもらえば、代替手段も出ていたと思います。
なお、ここの表示については(ご覧の通り)直しました。
sl,b さん、
そうすると、レジストリのキーを新規に作成して値をセットすることはできるけれども値を変更することができないということになりますね。
やっぱりわかりませんが、レジストリキーの値を("On" を "Off" に、とか)手動で変更することはできるでしょうか?
メガリスさんの #exec cgi は1回目でちゃんと動作するはず、でした。
つまり、出口さんのコメントにあるとおりに動作するはずでした。
そのつもりでいたのですが、調べてみたところミスがあって、言われるとおり2回目で動作します。
要はバグです。
1回目で環境変数QUERY_STRINGはセットされるのですが実行する test.pl に test.pl? と '?' がついてしまうために実行できずに何も出ないで、2回目で前の QUERY_STRING が残っているので動作した、というわけです。
ポインタがひとつずれてしまった結果のバグです。
でもメガリスさんも よく2回目に test.pl だけで実行してみたものだ、と感心してしまいました。
急いで修正版を出したいところですが、ISAPI まわりに手を加えている途中なので区切りをつけてからになります。週末くらいと思ってください。
だいきさん、こんにちは。
GNU for Win32についてですが、設定とかの情報はちょっと前の雑誌?になるのですが
「TRY! PC 10月号」に「WindowsのUNIX化計画」という記事で掲載されています。
本屋さんとかで多少のバックナンバーが置いてあれば見つかるのではないかと思います。
これを見てとりあえず入れてしまった私です。(^ ^;
参考になれば。
中田さん。諏訪と言います。
質問を、ゲストブック/コメント集 に出しました。
“自宅マシンWWW サーバ化計画”の“hello.cgi”のスクリプトを書いたら、大事件が起きました。
それ以後の、他の皆さんの、投稿文字が、巨大化してしまいました。
どうする事も出来ません。
すみませんが、直してください。
他の皆さんにも、ご迷惑をおかけしてすみませんでした。
大変ご迷惑をおかけしました。
諏訪です。有り難うございました。出来ました。素晴らしいです。
=== 報告 ===
中田さんのコメントの最後の行、“そのインストールでは、PATH の設定の他レジストリへの書き込みも行います。”を見て、分かりました。僕は、ZIP を使って解凍したので、インストールは出来ても、PATH、レジストリ書き込みは出来ていなかったのです。
=== テスト結果(1)===
WEB 裏技のMiniBBS v8.5 、Terra さんのPersonalbbs v2.1 は、共にOK でした。
SSI のカウンタもOK でした。しかし、“flock”のあるカウンタは、
“flock() is not available on Win95!”
のエラーが出ました。
=== テスト結果(2)===
“自宅マシンWWWサーバ化計画”の例題、下記のようになると思いますが、
---------- hello.cgi------------
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<H2>Hello! WORLD</H2>\n";
---------------------------------
これは、エラーになります。内容は、
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
Can't modify constant item in predecrement at A:\www\suwa\public_html\hello.cgi line 1, near "hello."
syntax error at A:\www\suwa\public_html\hello.cgi line 3, near "print"
syntax error at A:\www\suwa\public_html\hello.cgi line 5, at EOF
Execution of A:\www\suwa\public_html\hello.cgi aborted due to compilation errors.
僕の、仕様は、PC98,Win95です。Option General は、以下のようになっています。
DocumentRoot :よろしくお願いします。ご教示ください。
A:\www
Port :80
チェック、/~suwa -> DocRoot\suwa/public_html
GetREMOTE_HOST CGI/SSI にチェック
チェック、/cgi-bin -> DocRoot\suwa\cgi-bin85
チェック、allow SSI for:
/index.html と *.html にチェック
ExecProg for .pl,.cgi: perl
CGI/SSI Process Control:
Parse CGI Output にチェック
Parse SSI Output にチェック
use ISAPI for Ext : .dll は、チェックしない
use perlIS.dll for Ext : .pl, .cgi は、チェックしない
except POST は、チェックしない
チェック、/script -> a:\www\suwa\cgi-bin85
ブラウザURL は、http://127.0.0.1/~suwa/hello.cgi です。
A:\www/suwa/public_html ---- hello.cgi は public_html の中です。
A:\www/perl ---- Perl のインストールは、デフォルトのままです。
メガリスさん
以下はfj.lang.perlからの転載です.
Message-ID: <3465EB30.7EEEC3FB@mail.webnik.ne.jp>
><!--#exec cmd="Command Line"-->はコマンド実行なのでシェルが解釈します。
><!--#exec cgi="URL"-->はCGI実行なのでWebサーバが自分でCGIの方式で
>プログラムを実行します、当然スペースが入っていればスペース入りのプログラム
>ファイル名だとして扱われる訳です。
ということですので,<!--#exec cmd="Command Line"-->を使ったら
どうでしょう.ただ,ANHTTPdがcmdとcgiを上のように区別していればですけど.
だいきさん
CygnusのGNU for Win32はhttp://www.cygnus.com/misc/gnu-win32/
からダウンロードできます.GNU for Win32にはパッケージが二つあって,
一つは開発環境であるgccがついています.もう一つはgccなしのものです.
gccのついているものはファイルサイズが13MBくらいあるのでダウンロードは
大変です.gccのないものは4MBくらいです.今のバージョンはb18です.
機能としてはUNIXの標準的なコマンドがほぼ使えます.シェルはbashです.
bashの設定ファイルを自分のホームディレクトリに用意して置くと,aliasや
環境変数,PATHも有効になります.私は気に入っています.
ただし,設定方法が難しいかもしれないので,“UNIX for Win32”という本を
探すのがいいかもしれません.これには詳しく書いてありますし,CD-ROMも
ついているのでダウンロードの必要もありません.
せいじさん、こんにちは。
>こんばんは。質問なのですが、Win95NCで
>Hello.CGIを実行しようとすると
>Error 500 CGI Error - can't find Content-Type
>と表示されるのですがその下に
>CGI Output Message: Hello! WORLD
>と表示されます。
Perlで書かれていることを前提として書きますが、
「Hello! WORLD」と表示する前に、
print "Content-type: text/html\n\n";
という1行を入れてみるときちんと表示されると思います。
(\nが2つあるところがポイントです。)
これは出力するのが、htmlファイルですよという意味です。
>ほかのCGIについても1回目は正しく表示され
>2回目以降はしばらく表示されず(CGIの)タイムアウトの画面になります。
こちらについては、ちょっとわかりませんが。(^^;
お手数おかけします。
>レジストリの書き込みを制限するようなソフトのインストール(ないし設定)をされてはいないですよね(?)。
たぶん入ってないと思いますが・・・(TweakUIは関係ないですよね)
>一度レジストリキーのHKEY_LOCAL_MACHINE\SOFTWARE\AnHTTPd を削除してみて・・・・
削除して再実行したら再構築されましたが、設定の変更がレジストリに反映されないのは、
変わりませんでした。
はじめまして、だいきともうします。
ANHTTPdありがたく使わせていただいてます。
ところでお聞きしたいことがあります。
GNU-win32という言葉は発見したのですが(ここで)
機能・DLのしかたについてお教え願えないでしょうか。
それらしいページを発見したのですが英語がちょっと・・・・
ご存知の方お願いします。
あとPlISi313.exe をDLできません。
古いバージョンはできたのですが・・・。
これについても何か心当たりのある方お教えください。
お願いします。
それでは失礼しました。
こんばんは。質問なのですが、Win95NCで
Hello.CGIを実行しようとすると
Error 500 CGI Error - can't find Content-Type
と表示されるのですがその下に
CGI Output Message: Hello! WORLD
と表示されます。
ほかのCGIについても1回目は正しく表示され
2回目以降はしばらく表示されず(CGIの)タイムアウトの画面になります。
初心者なので恐縮ですがよろしくお願いします。
すいません。中にSSIのタグをそのままかいてしまいました。(^^;
再度投稿します。
-----ここから----
SSIについてちょっと質問があります。
よくCGIで引数を渡すときに、「test.pl?name=xxx&birth=yyy」といった形で引数を
渡すことができるとおもうのですが(よくFORMでMETHOD=GETとかで使う?)これをSSI
で行うことは可能なのでしょうか?
というのも、
<--#exec cgi="test.pl?name=xxx&birth=yyy"-->
といった形でindex.shtmlに記述するのですが、動作しません。
しかし、
<--#exec cgi="test.pl?name=xxx&birth=yyy"-->
<--#exec cgi="test.pl"-->
と2行書くと、期待する表示がされるのです。
感じとしては、1回目で引数が渡されて、2回目でプログラムが動作しているといった
気がします。
SSIは初めて取り扱うのでよくわからないので、どなたか教えてください。
よろしくお願いいたします。
SSIについてちょっと質問があります。
よくCGIで引数を渡すときに、「test.pl?name=xxx&birth=yyy」といった形で引数を
渡すことができるとおもうのですが(よくFORMでMETHOD=GETとかで使う?)これをSSI
で行うことは可能なのでしょうか?
というのも、
<!-- #exec cgi="test.pl?name=xxx&birth=yyy"-->
といった形でindex.shtmlに記述するのですが、動作しません。
しかし、
<!-- #exec cgi="test.pl?name=xxx&birth=yyy"-->
<!-- #exec cgi="test.pl"-->
と2行書くと、期待する表示がされるのです。
感じとしては、1回目で引数が渡されて、2回目でプログラムが動作しているといった
気がします。
SSIは初めて取り扱うのでよくわからないので、どなたか教えてください。
よろしくお願いいたします。
諏訪さん、
use perlIS のチェックをはずしてください。
それだけではだめなようなら、DocumentRoot を教えてください。
さらに、/~username -> DocRoot\... を使っているならそこの指定の内容と、ブラウザで指定するURL(http://....)がどうなっているか、もお願いします。
なお、Pw32i313.exe をダウンロードされたのなら、実行すると自動的にインストールのバッチファイルが実行されるはずですが。。
そのインストールでは、PATH の設定の他レジストリへの書き込みもおこないます。
sl,b さん、
95でしたか。そうなるとちょっと不明です。
レジストリの書き込みを制限するようなソフトのインストール(ないし設定)をされてはいないですよね(?)。
わかりませんが、AnHTTPd がらみでは、一度レジストリキーの HKEY_LOCAL_MACHINE\SOFTWARE\AnHTTPd を削除してみて、起動した後再度そのキーができるかどうかみてください。
こんにちは。よろしくお願いします。
HTMLファイルは表示できるのですが。“hello.cgi”も“Minibbs8.5”も、CGIがうまく出来ません。Perlをインストールしたとき、Autoexec.bat に Perl へのパスが出来ていませんでした。エディタで、PATH=%PATH%;A:\perl\bin としました。。Minibbs スクリプトの位置と、Perlの場所は、以下のとおりです。PC98,WIN95 です。
a:\www/suwa/public_html/mini-bbs85/minibbs.cgi
a:\www/suwa/perl (313J114B、PW32i313解凍はしたが、特にインストールという作業は していません。)
エラーの内容は、minibbs.cgiを表示しようとしても、接続できませんとでます。
WWWディレクトリ内のエラーメッセージ
Error Response 500 for /cgi-bin85/minibbs.cgi
suwaディレクトリ内のエラーメッセージ
LoadLibraryEx("PerlIS.dll") failed with errorcode = 1157
public_htmlディレクトリ内のエラーメッセージ
Response 404 for /pictures/gc_icon.gif
ご教示をお願いします。
>sl,b さん、
>NTでの話でしょうか?
>でしたら、その6に以下の話があります。
いえ、NTではなく、95なんです
こんばんは。よろしくお願いします。
HTMLファイルは表示できるのですが。“hello.cgi”も“Minibbs8.5”も、CGIがうまく出来ません。Perlをインストールしたとき、Autoexec.bat に Perl へのパスが出来ていません。パスは、どのように書けば良いでしょうか。Minibbs スクリプトの位置と、Perlの場所は、以下のとおりです。PC98,WIN95 です。
A:\www/suwa/public_html/mini-bbs85/minibbs.cgi
a:\www/suwa/perl (313J114B、PW32i313解凍済)
ご教示をお願いします。
西井さん、
テストありがとうございます。
NTでの PerlIS で特に POSTメソッドの場合は、私の方のテストも不十分です。
おそらく標準入力待ちが続くのではないかと思われますが、対策は httpd 側でとらないといけない話だと思います。
少々お待ちください。
もし、GETでそうなるとすれば、ちょっと推測の範囲を越えるので、その場合はその旨お知らせください。
なお、ISAPIのPOSTメソッドは Win95 でも時間がかかりすぎるので、これも対策中です。
sl,b さん、
NTでの話でしょうか?
でしたら、その6に以下の話があります。
>吉田嘉津男 kazuo@core.cs.shinko-elec.co.jp 1997/08/21 16:57
>こんにちは、吉田です。
>
>NTでは通常ローカルユーザはHKEY_USER\Softwareの物を使うみたいです。
>他のソフトはユーザ毎にレジストリを書いているみたいです。
>私もNTは初心者で、何も知らずに、Serverをせっせと立ち上げている次第です。
>
>ちなみに、HKEY_LOCAL・・・にあるレジストリを消して、ローカルユーザで
>再度、HTTPDを起動したら、きちんと設定を覚えてくれるようになりました。
>レジストリもHKEY_LOCALに作られました。
>しかし、その他のユーザでログオンした場合には、実行権が無いため、実行できない。
>と言われ、起動できませんでした。
これは8月の話ですが、その時にサービス対応を考えますと言っておきながら、まだできていません。
西井です。
先ほどのコメントにてバージョン表記が間違っておりました。
AN HTTPd version 0.9 beta 5b です。申し訳ありません。
お世話になります、西井です。
AN HTTPd 0.95b2 を使わせていただいております。
WindowsNT4.0 Workstation + AN HTTPd の構成にて
Perl(build 313) + PerlIS による CGI をテストして
おります。
PerlIS を使わない Perl のみの環境では問題がないの
ですが、PerlIS を使用すると httpd のプロセスが
100% となり、httpd.exe が応答なしとなってしまいます。
log を見ると以下のメッセージが出ておりました。
(タスクの強制終了を行ったため、このメッセージが
正確かどうかは分からないのですが、ご参考まで)
Warning: connection reset during recv() in
ClientRead() for Thread 1 with errorcode 10054
中田様ならびに会議室の皆様より何かアドバイスを
いただければと思います。
宜しくお願い申し上げます。