(中田昭雄 1998/01/31 08:14)
> 井上さんのは確かに PerlIS の問題なのかもしれません。
> ...
> あと、AnHTTPd では ISAPI のすべて(のファンクション)に対応しているわけではないのでそのためにうまくいかないこともあり
> えます。
> PerlIS がそれを使っていれば、ということですが。
そうですか.問題は単純そうに見えて実は難しそうですね.単にcheck boxをon/offにすることで問題は解決されたかに見えましたが,その実は
PerlISに依存する(であろう)問題だとは.
しばらく,これで様子を見てみます.また何か伝えなければならない情報があったら提供もしくは教えを乞うことにします.
#ゆいちゃっとではないC言語系のchat system(http://www.geocities.co.jp/SiliconValley/4810/waccha.html)で問題を抱えておりますので.
有り難うございました.
以前にも「*.html」の所にチェックを入れてみたんですが、その時は
タスクトレイのアイコンがアクセス中のまま、ハングしてしまいました。
また、それはエラーログには記録されませんでした。
jgawk.exeを支持通りa:\windows\command(僕の機種は98)にコピー
しましたが駄目でした。
shoo さん、
リソースの件でですが、Windows95のバージョン, httpd のバージョンと お使いのブラウザの種類とバージョンを教えて下さい。
galahad さん、
なるほど。。。予想外の展開でした。
レスキューさんのSSIの方は、
カウントしたいページのソースファイル拡張子が html でしたら、AnHTTPd の Options/General で、Allow SSI for のところで *.html のチェックを入れてください。
jgawk.exe は、
ドキュメントルート以下にはPATHが通っていませんから、一番簡単には、jgawk.exe をたとえば C:\Windows\command にコピーして下さい。
井上さんのは確かに PerlIS の問題なのかもしれません。
わかっている問題(仕様)のひとつは
PerlIS では、CGIの最初の出力の前に"HTTP/1.0 200 OK"などのレスポンスヘッダをつけます。
perl.exe でもそうなのですが、PerlIS では必ず応答コードが 200 になります。
たとえば、Location:を出力するときは、応答コードを 302 にする必要がありますから、CGIで
print "HTTP/1.0 302 Found\n"
をつけることになります。
CGIの最初の出力が "HTTP/...." だと、そちらを使い、200の応答は出しません。
あと、AnHTTPd では ISAPI のすべて(のファンクション)に対応しているわけではないのでそのためにうまくいかないこともありえます。
PerlIS がそれを使っていれば、ということですが。
そろそろオリジナルのBBS-CGI(結構簡易的)が発表できそうです。
完成次第、私のホームページで配布したいと思っています。
都合によりチャットプログラムの配布は中止していますが、
よろしければ使用してください。
配布準備が出来ましたら、また報告させていただきます。
#CGIを作ってると普通でもエラーメッセージがわかりにくいのに、
#PerlISを使う設定にするとエラーメッセージさえでない状態になるので大変です(笑)
またまたSSIの話なんですが・・・
最初から付いている「 ssisample.shtml 」では動作するのですが・・・
といっても、カウンタは動作しないんですが・・・「 jgawk 」は所定の
[DocumentRoot]/cgi-bin/jgawk.exe とあるのですけど。
いろいろなマニュアルを読むと最初にピリオドのある、なんとかって
いうファイルを生成するとあるのですが、僕のwinでは「ファイル名を
つけて下さい」とのメッセージが出てエラーになります。
なにはともあれ、「動作するけど、動作しない」という矛盾した壁に
ぶちあたっています。
Options/GeneralのポートナンバーとProxyのポートナンバーを
そろえなくてはならないのですね。Proxyが8080であればいいかと
思っていました。どうも済みませんでした。
そういえば、僕も長時間httpdを使用していると(特にcgiのチャットなどを
使うと)システムリソースが極端に少なくなる事があります。
場合によってはhttpdを再起動する事でかなり回復する事もあります。
これは普通でしょうか。
支持通りにやってみましたが、だめのようです。
ちなみに「なにも表示されない」というのは間違いで、ソース表示
で見たら、見れました(っていうか、エラーですよね)。
中田さんの指定したチェックを外してもエラーなどは検出されず、
ログにも変化無しでした。
このページには<!-- #exec cmd="./count/pcount.pl"-->のアクセスがありました。
本日は只今までに <!-- #exec cmd="cat ./count/day.txt"-->カウントになります。
昨日は<!-- #exec cmd="cat ./count/old.txt"-->カウントありました。
というようにレスキューさんの支持通り、カウントしたいページに記述した
のですが、表示させてみると、ソースにSSIの命令文がそのまま表示さ
れています。
ディレクトリの構造はカウントしたいページのHTMLがあるディレクトリが
public_htmlで、肝心のpcount.pl(スクリプト)はすぐ下の階層の「count」ディレクトリ
に、画像ファイルは同じくすぐ下の「image」ディレクトリに格納してあります。
pcount.plの内部の変更するべき所も全てチェックして変更しました。
ここまでやって出来ないのですがどうすれば良いのでしょうか?
(中田昭雄 1998/01/30 21:30)
> 井上さん、
> うまくいったようですが、一通り流れを追ってみて、ちょっと原因はわかりません。
> せいぜい、ブラウザのキャッシュがらみかな(?)と思うくらいで。。。
> ブラウザはIE3ですか? 話の感じからすると Netscape でしょうが、だとするとさらにわかりませんね。
現在のところ,"軽さ"でNN3.04(English)です.それで,設定変更後の種々のcheckは必ず,reloadで確認しておりますので,
Back/Forwardを使う怠慢はしておりません.
(中田昭雄 1998/01/30 21:35)にあるようにperlIS.dllからみということも考えられるということでしょうかねぇ?
> # web site とのこと、了解しました。では PWS を使うのが正解ということになりますね。
> ...
しかしながら,ぼくの環境ではどうにもできなかったことから,pws Japanese v1.0にしても,IEx.xのcomponentということでしょう.
galahad さん、
うまくいかない原因を調べるには use perlIS のチェックは はずしてください。
PerlIS(ISAPI)に特有の問題もあるのでわけがわからなくなる可能性が高いからです。
そして parse CGI Output をチェックすることです。
これは perl や OS の出すエラーメッセージを見るためです。
三浦さん、proxy の件、了解です。
来週くらいから proxy の方を見直そうと思っているので調べてみます。
ふるちゃんの VRML については私はわかりません。
EAIもやってみたことはないので。。。
ただ、サーバ側は wrl ファイルを送るだけだと思うのですが。
サーバの方のMIMEの設定では MIME typeの方はひとつしか書けません。
x-world/x-vrml だけというふうに。
あと、「破壊」云々のメッセージは何が出しているのでしょうね?
CosmoPlayer か Java か ブラウザか、というようなことですが。。。
まあいずれにしろ仕組みを知らないのでなんとも言えませんけど。
こんどう@中川BFC さん、よろしく。 質問歓迎です。
OSAMU さん、どうも。
readme の注意点に書いてあるにはあるんですが、わかりにくいので。。。
shoo さん、
三浦さんも言われるように、
DOS/V の方の httpd は Options/General で Port を 8080 にしてください。
そして 98 の方のブラウザは、オプションで プロクシを手動に設定して HTTP, FTP のところを 192.168.0.1、そのポートを 8080 にしてください。
井上さん、
うまくいったようですが、一通り流れを追ってみて、ちょっと原因はわかりません。
せいぜい、ブラウザのキャッシュがらみかな(?)と思うくらいで。。。
ブラウザはIE3ですか? 話の感じからすると Netscape でしょうが、だとするとさらにわかりませんね。
# web site とのこと、了解しました。では PWS を使うのが正解ということになりますね。
# 95 の PWS Japanese v1.0 は 確か IE4.0 なしで使えた記憶があります。(IE4.0が出る前のことですから)
# その後のバージョンは IE4.0 に含まれる ライブラリを使っているのでしょうね。
# このあたりが 「IE と OS(NT/95)は一体です」という主張のあらわれなのでしょう。
# Microsoft のページで「他のブラウザを使ってもかまいません」 のくだりはなかなかいいですね。
どうもです。前にも書きましたが、CGIあたりは動作させることが出来る
ようになりました。
ですが、SSIがイカンです。
カウンタを設定して全部準備は終わった(と思っている)状態で改めて
ページを読み込んでみても、なんも出てきません。
エラーの対処法などが書いてあるのですが、全て最初に
「HTMLの書式が表示されてしまう場合には・・・・」
などと書いてあります。
表示すらされず、エラーもでない場合は、どうすればいいのでしょうか?
>shooさん
設定をみましたが、httpd は port80 で動作しているようなので
httpdの Options -> General でportを8080にするか、
ブラウザのproxy設定のポート番号を80にすればいいと思います。
ご無沙汰しております。
ずいぶん前の話ですいませんが、
proxy 使用でNetscape Communicator(以下NC)でのFTP時に保存ファイルの
拡張子が .exe になる件です。
原因は結局 NC のFTPの動作にあるという事で、他のproxyで試してみる所でした。
遅くなりましたが結果報告です。
試したproxyは、
・3webのproxy
・Wingateというシェアウェア
の2種類です。
結果は両方とも正常でした。( .lzhは.lzhに、.zipは.zipになる)
AN httpd でもファイル自体は正常に保存され、拡張子の問題だけで、
それほど不自由していないので気長に待つことにします。
use ISAPI for Ext: .dll
use perlIS.dll for Ext: .pl .cgi
のcheck boxをoffにして,かつ,
except POST
のcheck boxをonにすると,ゆいちゃっとはなぜかスムーズに走り出しました.
これはなぜなのでしょうか.
ぼくはWin95のc:\autoexec.batにperlのpath設定は全て行っております.原因はfileの置き方と
An HTTPdでのpath設定が一致していないということでしょうか?
何か,もう少し説明すべき事項がありますでしょうか.
ふるちゃんです。
さっきの書き込みに間違いが有りました。訂正します。
VRMLのページ自体は表示できました。
ブラウザが「破壊...」というエラーを出したのは、
VRMLのEAIを使用したページでした。
embed で表示したVRML( CosmoPlayer2.0 )とJavaアプレットで通信を行っています。
このページをhttpdを通して表示しようとすると、「破壊... 」というエラーが出ます。
EAIを使用していなければ問題ないようです。
それでわ。
はじめまして、ふるちゃんです。
今日始めて、利用してみました。Java の通信テストに使用してみました。
一つ質問が有ります。
VRMLのページを表示しようとしたら、
「このページは破壊を目的としたプログラムが含まれている。」
といったエラーが表示されました。
MIMEタイプを次のようにしてみましたが、上手くいきません。
wrl,wrz,gz model/vrml,x-world/x-vrml
どのように設定すべきでしょうか?
ちなみに、httpdを通さなければ、きちんと表示できるのでブラウザの設定は正しいと思います。
ぜひ、教えてください。お願いします。<_o_>
はじめまして
これからCGIの勉強をするためにここのhttpdをダウンロード
させていただきます。色々と質問すると思いますが、よろしく
お願いします。
おかげさまでなおりました。
>ダブルクォートでくくるか短縮名にしてから実行するという手はあるのですが、いまのところ、空白を含む
フォルダ名は避けてください。
これって、どこかに書いてありましたっけ。
だとしたら、申しわけ有りませんでした。
どうもお久しぶりです。
おかげさまでAnHTTPDは順調に稼働しています。
(相変わらず外部からの接続で例外割り込みのエラー等が出ることがありますが・・)
ネットワークがおかしくなったという書き込みについて思い当たる節があります!
もしかしてshooさんはDOS/Vと98をクロスケーブルで直接つないでいるのでは無いでしょうか?
うちでもDOS/Vと98をクロスケーブルで直接つないでいたのですが、
非常に調子が悪かったのです。
もしかして!と思って友人からHUBを借りてみると嘘のように直りました。
やはりP200MzとP75Mzのパソコンを直接繋ぐのには無理があったのでしょうか・・・
それともネットワークボードの相性??
先ほどの投稿について.
やはりIE4.0は必須です.詳細は以下を参照.
http://backoffice.microsoft.com/downtrial/optionpack.asp
続、proxyの件です。
ネットワークコンピュータは何かしているうちに勝手に直ってしまいました。
原因も分かりませんし、直った理由も分かりません。
それでですが、pingに対してはちゃんと応答がありました。
A:\WINDOWS>ping 192.168.0.1
Pinging 192.168.0.1 with 32 bytes of data:
Reply from 192.168.0.1: bytes=32 time=2ms TTL=32
Reply from 192.168.0.1: bytes=32 time=1ms TTL=32
Reply from 192.168.0.1: bytes=32 time=2ms TTL=32
Reply from 192.168.0.1: bytes=32 time=1ms TTL=32
しかし、proxyサーバに対しては応答してくれません。設定の方法があまりよくわからないのですが、
こんな風でいいんでしょうか。
(中田昭雄 1998/01/29 21:38)
仰るとおりでした."enter.cgi"の中身を再確認してからDOS promptで走らせてみたらそのようになりました.
ただ,NNで走らせるとやはり,上側にはまともな(本来表示されるはずの)ものが出ません.
print "Content-type: text/html\n\n";
で引っかかっているので,いろいろと変更をしてみましたがだめですね.なぜなんでしょう?
#ぼくのPCにはIE4.0が入っていません.その環境でpws(Japanese ver. 1.0)をdownloadして
installしても,いろいろなtab buttonを押しても何の反応も示しませんでした.そこで
www.microsoft.comに行くと,そのようなことが書いてあったということです.
試しにpws(English ver. 4.0)を入れてもう一度確認をしてみます.それで,
ゆいちゃっとがスムーズに走れば何が原因かが分かりますよね?
#WebSiteというのは通常の意味でのwebsite(homepage)であって,
例えばO'ReillyのWebSiteを指しているわけではありません.
中田さん.
httpdの設定を変更しないで出来ました。
perlISのファイルかどうか自信ないですが、ISAPIのファイルを
サイトに行ってダウンロードし、インストールしたら出来ました。
ひとまず、CGIの「MiniBBS v8.7」はちゃんと動作しました。
で、次はカウンタを付けてやろう!と思いまして、レスキュー
さんからSSIのグラフィカルカウンタプロというやつをダウンロード
してきてやってみました。ですが、エラーを出すとか、タグが
画面に表示されるとかじゃなくて、表示すらされませんでした。
どうしたらいいのでしょうか?
ちなみに、「MiniBBS v8.7」はクッキー対応らしいのですが、
ローカルで試してみたところ、以前入力した所に同じ名前やメール
アドレスが記入されているはずなのに、されていませんでした。
同じ「MiniBBS v8.7」を利用したホームページでやった時には
ちゃんと記憶されていたのですが・・・
なぜなんでしょうか?
galahad さん、
詳しい説明どうも。奮闘お疲れ様です。
Options/General の下の方の use perlIS のチェックは はずして下さい。
#! のところは、parse #! line のチェックをはずしておけば関係しません。
それであとはなんとかなると思いますが、ならなかったら、どういうエラーになったか説明してください。
前の方の http://*.*.*.*/~galahad/index.html はそれでいいはずですし。
OSAMU さん、
だとすると、ドキュメントルートに空白(ブランク)を含むフォルダ名がはいっていませんか? たとえば Program Files のような。
CGIファイルはフルパスにしてから起動するので、たとえば
command /c c:\Program Files\httpd\cgi-bin\test.bat
のようになってしまい、もちろん c:\Program というコマンドはありませんからエラーになります。
ダブルクォートでくくるか短縮名にしてから実行するという手はあるのですが、いまのところ、空白を含むフォルダ名は避けてください。
ぷりさん、
申し訳ないです。
/path1 に対して、http://host/path1 という URL で一度認証するとブラウザ側では ひとつ上のディレクトリに対する認証とみなしてしまうようになっていました。
この例では http://host/path1/ としてやればOKのはずです。
ただし、その前にブラウザの再立ち上げは必要です。前の認証をブラウザが覚えているので。
一度、http://host/path1 の形の認証をやるとそれ以降おかしくなります。認証と、/ で終わらないディレクトリに対して / を追加するやりとり との順番の問題のようです。
で、もちろんこれは次の(今週末)バージョンで直します。しばしお待ちを。
井上さん、
Perl for Win32 で使えない Unsupported routines は、Perl をインストールしたディレクトリの下の docs\Perl-Win32\status.txt にあります。
require はもちろん Perl for Win32 でも使えます。
ゆいちゃっとProについては、文字どおり Syntax Error ですが、PerlIS.dll では(今の所)エラーメッセージを拾えないので示していただいたようなエラーになりますので、内容は同じことです。
ただ、どうして enter.cgi で Syntax Error になったのかよくわかりません。
11: require './jcodeLE.pl';
12: require './pref.cgi';
13: $| = 1;
ですよね(?)。
あと、
> のenter.cgi?enter,すなわち:
> x:>perl(jperl) *.cgi %s %s (xはdrive name)
> の二つ目の%sが走らないと言うことです.
の意味がわかりません。コマンドラインで確認するなら、
x:>set QUERY_STRING=enter
x:>perl enter.cgi [enter]
だと思うのですが。。。だいぶ手を入れて改造しているのでしょうか?
いずれにしろAnHTTPdでは enter.cgi?enter という URL に対して、上の様に起動します。
#PWSがIE4.0必須というのは初耳です。
#でも引き継がれるのは WebSite ですよね?
#引き継ぐものでやるのが正解だとは思いますが、
#この件はサーバ依存の話ではないようにも思えます。
shoo さん、
ネットワークコンピュータで出てこなくなってしまったものの復旧は、多分ネットワークプロトコルをすべて一度削除してあらためて追加する方が早いかもしれません。
LANカードへの NetBEUI のバインドとかファイル/プリンタ共有のチェックがはずれたものかかな、とは思いますが。
httpdのプロキシについては、DOS/V と 98 が TCP/IPプロトコルでつながらないといけないわけですが、それを確認するには DOSプロンプトで 98 からは ping 192.168.0.1 としてみて下さい。
それで reply from 192.168.0.1: ... という応答がないようだとうまくつながっていません。
そのときの ping のエラーメッセージをお知らせ下さい。
奮闘した結果、エラーが出ました。
ISAPI Error
Internal Error. See "errors.log".
と出ました。Perlの所在の所に「#!perl/bin/perl」としてしまったんですが
駄目でしょうか?
ちなみに、httpd(DocumentRoot)にログファイルが生成されないのは何故で
しょうか?
どうもすみません。下の記事の一部修正です。
足りないファイルだの、保存形式がどうのこうのとのたまってますが、
もう一度ページに行ってみたところ、見落としがあったので、解決しました。
残りは自分のパソコンのサーバにCGIを置いた場合のそのURLの記述の
方法とPerlの所在(CGIスクリプトの一番上の行に書くヤツ)の記述方法です。
CGIの設置で挑戦したのはレスキューさんの「簡易BBS(minibbs.cgi[Version8.7])です。
スクリプトをダウンロードしたのはいいのですが、まず必要なjcode.plとか
いうファイルがないんで一つ。
中身を自分の環境に合わせて書き換えるのはいいが、保存形式がなん
だか良く分からない(CR/LFとか)。また、それによって、普通に編集しても
以前の状態から上書きしてしまうので一つ。
minibbs.cgiの一番上の行にあるPerlの居所を示す書き方が良く分からん
ので一つ。
minibbs.cgiのなかにある「このCGIの所在」を書く所に、どのように記述し
ていいのかわからないので一つ。
今の所、以上4点の壁にぶち当たってます。
例のhttp:// * . * . * . * /user/~galahad/index.html の件ですが、
結局諦めてhttp:// * . * . * . * /~galahad/index.html にしてしまいました。
/~galahad-->DocRoot\user\galahad\public_htmlにしていましたが、駄目
だったんで・・・。
では、Perlについては後程詳しく(出来るだけ)投稿致します。
>どのCGIを実行した時のエラーでしょうか?
肝心なことを書くのをわすれていてすいません。
添付のtest.batです。
ただし、cgisample.htmlにあるどのCGIでも同じ結果でしたが。
すいません、また認証(access control)の件ですが、
0.9 6bにしたところ、最初認証が効かなくなってしまいました。
認証自体が実行されず、そのままスルーして目的のページが
見れてしまいます。
それでもう一度access controlの所を設定しなおしたところ
今度は正しいユーザ名、パスワードを入れても。認証に失敗します。
> ...よく分からない(井上 俊満 1998/01/29 03:40 )
は正確には,例えば"require"がUNIX用のcommandなのかどうかが分からないという意味です.
あるいはどれがWin95/NT上で使用できないperlのcommandなのかが分からないと言うことです.
#前任者はWinNTでpwsをinstallして使っていたためregeditした後は何も問題なく使っていた.
使用環境:Windows95 4.00.950a
An HTTPd 0.9b6
その後(井上 俊満 1998/01/21 03:47)忙しくて時間があるときに集中して引き継ぎを行っていますが,
一つだけcgiが走りません.走らないのは:
ゆいちゃっと Pro(Free)
のenter.cgi?enter,すなわち:
x:>perl(jperl) *.cgi %s %s (xはdrive name)
の二つ目の%sが走らないと言うことです.Regeditすればいいのかなという感じです.
具体的なerror messageは以下の通りです.
perlis.dllをcheck offにしているとき:
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
syntax error at d:\html\cgi-bin\chat\enter.cgi line 13, near "require "
Execution of d:\html\cgi-bin\chat\enter.cgi aborted due to compilation errors.
perlis.dllをcheck onにしているとき:
AnWeb/0.9b6ISAPI Error
Can't get response Header
Output Message:
HTTP/1.0 200 OK Date: Wed, 28 Jan 1998 18:27:59 GMT Server: AnWeb/0.9b6 'D:\html\cgi-bin\chat\enter.cgi' script
produced no output
それでいろいろとsourceを見直しましたが,ぼくにはよく分かりません.C言語で作ったchat systemもやはり*.cgi?*で止まっているようです.
Microsoftのpwsは"IE4.0がinstallされていることが前提"とあるのが気に入らなくて使っていないのが現状です.
#中田様の言うとおりにした方が正解なのか?(中田昭雄 1998/01/21 21:27)
再びプロクシについてです。
イーサネットボードのTCP/IPのプロパティの IPアドレス タブで
IPアドレスをDOS/Vを192.168.0.1、98を192.168.0.2とし、
サブネットマスクを255.255.255.0と設定して、
DOS/Vの方にhttpdを立ちあげて98の方のブラウザで
プロクシサーバのポートを8080と設定したのですが、
全く反応しません。
で、ネットワークコンピュータのプロパティをいじっていたところ、
98の方がネットワークコンピュータとしてDOS/Vや自分自身を
認識しなくなってしまいました。しかし、DOS/Vからだと98を
認識しています。でも共有ファイル・プリンタにはアクセスできません。
これはどうやったら復旧できるんでしょうか。
galahad さん、
http://*.*.*.*/user/~galahad/index.html
でうまくいかない話は解決したでしょうか?
「基本的な運用は可能になった」とのことなので、いいのかな(?)と思いましたが。。。
もしまだでしたら、現在設定している DocumentRoot と /~galahad -> がどうなっているか説明してください。
ファイルアクセスの権限(パーミッション)の設定の話は UNIX サーバでの話で、Windows95 ではパーミッションの設定はできないので不要です。
したがって、CGIがうまく動かないのはパーミッションの問題ではありません。
とりあえず、うまくいかないCGIの説明をしてください。
(1)どこのどういうCGIか(たとえばレスキューさんの minibbs、とか)
(2)そのCGIをどう動かしたか(たとえばhttp://127.0.0.1/minibbs/minibbs.cgiとした、とか)
(3)その結果どうなったか(アクセスできませんというエラーになった、とか、Error 404 になった、とか)
で、結果については、AnHTTPd の Options/General で parse CGI Output をチェックしておくともう少し詳しい情報がでることが多いので、その内容がわかるとさらに解決が速くなります。
具体的な例をひとつ解決できれば理解も進みますしあとは楽に進むと思います。
西井さん、
今後変になったらお知らせ下さい。
いわゆるログ解析ツールについては、Yahoo!USA などでは Log Analysis Tools というセクションがあって沢山ならんでいます。
AnHTTPd のログは標準ログフォーマット(のはず)ですので、これらのツールが使えると思います。
やしょくさん、
/cgi-bin -> \aaa
としても、それとは全く関係せず
/home/user/xxx/cgi-bin は \home\user\xxx\cgi-bin
になるだけです。
/cgi-bin は、仮想ルート(ドキュメントルート)をルートとする仮想パスです。
#exec cmd の中身にAlias を適用してしまうのは、ちょっとまずい仕様かな、と思っています。
ですが、とにかく現在の仕様でおっしゃるようなことをやるとしたら、たしかに
/cgi-bin のところを
/home/user/xxx/cgi-bin -> d:\hp
とすればいいわけですが、バグのため、この設定は保存できません。
ただ、これができたとしても、
http://127.0.0.1/home/user/xxx/cgi-bin/aaa.cgi というようなアクセスを許すことになりますから、ちょっと変ですよね。
というわけで、上の設定の保存のバグは直しますが、#exec cmd の解釈についてはもう少し考えようと思っています。
(ちょっと混乱してきました。。。あらためて書きます)
基本的なホームページの運用は可能になりました。
が、しかし!
CGIやらSSIやらPerlやらといった代物は未だに理解することはおろか
何処かのホームページの説明を見ながらでも上手く利用することが出来
ません。
エラーというよりも、CGIにリンクさせても、CGIとして認識していないよう
なのです。
いろんな所に書いてあるように、ファイルアクセスの権限を設定(書き込み
とか読み出しとか実行)をやるべし!とあるのですが、どうやるのでしょう?
galahadさん
\に対応するのは¥です.もちろん半角です.
Perlのプログラミングの中で出てくる「/(スラッシュ)」の
逆の向きの奴はどうやって打ち込めばいいんでしょうか?
「\」の半角の奴です。
お世話になります、西井です。
吉田様同様、当方でもβ6bを導入しました。
現在運用3日目ですが、CPU 高負荷は発生しておりません。
前回の版で見えなかったタスクトレイへの常駐も見えております。
話は変わりますが、httpd.log から IP アドレスと時間帯(day/hourly)の
統計を簡単なグラフにしたいと思っているのですが、何か良いお知恵は
ありませんでしょうか。(そのような処理には疎いもので...)
現在の log ファイルから色々と工夫されている方がいらっしゃいましたら
是非ご参考にさせていただきたいと思います。
宜しくお願い申し上げます。
出口さんどうもありがとうございます。
で、Perlのインストールをして、フリーCGIのページで適当にもらってきて
やってみたんですが、どうもうまく行きません。
なにか、基本的な設定でいじるところがあれば教えて下さい。
galahadさん
cgi-binの中のinput2.batの内容を見ると分かりますが,
jgawkを使っているからでしょう.jgawkをインストール
していない場合は「コマンドまたはファイル名が違います」に
問題ありません.
質問です
Aliasはどのように動作しているんでしょうか?
/cgi-bin -> \aaa
としたとき
/home/user/xxx/cgi-bin
は,
/home/user/xxx/cgi-bin
/home/user/xxx\aaa
\aaa
の,どれになるんでしょうか.
#exec cmd="/home/user/xxx/cgi-bin/..."
を
#exec cmd="d:\hp\cgi-bin\..."
としたいだけなんで,
DocumentRoot d:\hp
/~xxx ->
/home/user/xxx ->
というようにして,不用なパスを削りたいんですが,上手くいきません.
現在は,
DocumentRoot d:\
/~xxx -> DocRoot\hp
/cgi-bin -> \cgi-bin
と設定して
d:\hp\...にHPのファイル
d:\hp\cgi-bin にcgi関連
d:\home\user\xxx\cgi-bin にcgi関連のコピー
として,とりあえず動いているんですが,コピーを最新に保つのが面倒なんで
何とかならないかなと.
いままでのとは少し違った系統の質問です。
試しにダイヤルアップ接続してから自分のサーバに接続してみると
エラーが出てしまいました。
構造としては
httpdとなっています。
|
+--いろんなフォルダ
|
+--user
|
+--galahad
|
+--public_html
|
+--[ index.html ]
前回の発言で粗方、と言ったのは一つだけ上手く行ってない部分が
あるからです。
CGIのサンプルページの
「もう少しまともな応答は・・・」
というところは、依然
「入力された文字列は.コマンドまたはファイル名が違います.ですね」
となったままです。
いい加減、自分で何とかしろ!といわれそうですが、全くもって理由が
分かりません。
これが出来ないと何か機能に重大な、または機能の一部に支障を来た
してしまうのですか?
OSAMU さんのご質問はちょっと意味をはかりかねています。
どのCGIを実行した時のエラーでしょうか?
galahad さんのIEでバッチファイルのCGIをダウンロードしてしまう件は、
ファイルタイプのMS-DOSバッチファイルの内容の種類を text/plain にすることで一応OKになったはずですが、これの理屈は私もうまく説明できません。
なお、jgawk のありかはホームページにある Vector のページから入手してください。
次のステップは、当然 Perl の CGI だと思います。
tbp さん、
document.lastModified は、レスポンスヘッダの Last-Modified: を見ているのだったと思います。
Allow SSI のチェックをはずすか、index.html のチェックをはずしてみてください。
でないと、SSIを含むHTMLとみなして、Last-Modified: を出しません。
谷名さん、
たしかに、 /cgi-dir などに変えてもその設定が保存されませんね。
これは直します。
八重歯さん、
自分の今のIPアドレスは winipcfg を使うとわかります。
GetRight などのレジュームには現在は対応していません。が、対応させた方がいいですね。
いつ頃までに、とは言えませんが、対応させます。
まくらさん、
AnHTTPd で、というか Windows95 ではうまく動作しないものはあります。
下の方の
>中田昭雄 nakata@st.rim.or.jp 1998/01/05 10:22
を見てください。
一部引用しておくと、
>すべてのCGI/SSIが動くとはいえません。たとえば以下のものは動きません。
>(1) perlスクリプトで flock, symlink を使っているもの
>(2) UNIXのコマンドを使っているもの
>(3) UNIXのシェルスクリプト
shoo さん、
たとえば IPアドレスが DOS/V が 192.168.0.1, 98 が 192.168.0.2 とすると、
DOS/V で httpd.exe を Port 8080 で動作させて、
98 側のブラウザのプロキシの設定を 192.168.0.1 ポート 8080 とすればいいはずです。
ただし、DNS, hostsファイルの問題が出るかもしれません。動作が極端に遅いときはお知らせ下さい。
(多少proxyの動きが悪いのは現状の仕様です)
どうも、はじめまして。
うちでも6bを試しています。SSI/CGIのデバッグにこんな方法が
あるなんて全然気がつかず、感動しています。
で、アーカイブを展開してそのままで試していると、SSIは
問題無しなんですが、CGIが
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
コマンドまたはファイル名が違います.
になってしまいます。
表示が日本語になって、どのファイルを探していたのか表示されなくなった
様なので困っています。
よろしくお願いします。
なんとか、粗方の問題は解決したんですが・・・
支持通りにやってみて出来たんですが、自分が理解し得ないところを
いじって出来るようになったので、なんか釈然としない気持ちです。
もっと勉強しなくては!
ということで、次のステップに入ってしまおうかと思っているんですが
・・・・・どうでしょう?
・・・・・はい分かりました(笑
自分で決めます(爆
はじめまして。Ver0.9beta6bから使用させて頂いてます。
1つ質問なのですが、IE3.02で document.lastModified が
正常に取得出来ないようです。全く同じHTMLをgeocitiesに送ると
正常に取得出来ているので、HTMLの問題では無さそうです。
IE4.0では正常に取得出来ていたようですが、私の手元には
インストールしていないので確認は取れていません。
ネットスケープも全くチェックしていません。
SSI・CGIを極力使いたくない(マシンパワーが無い)ので、
何とかJavaでファイル更新日時を取得出来るようにお願いします。
中田さん.
だめです。全然だめです(泣
CGIのテストの時点でうまくいきません。
状況は下の方のログ見たと思うんですが、そのまんま、変化無しです。
最新版の6bを再びインストールしました。
パスなども確認しました(意味の分からない奴はそのまんまですが・・・)。
なにか、僕のパソコン自体がおかしいのでしょうか?
なにしろ、バッチファイルがダウンロードに入ってしまうので・・・
あどばいすぷりーず!!!(笑
中田さん、やっと正しい状況を把握しました。
/cgi-binを/cgi_dirに書き換えて、AliasをC:\home\cgi_dirに設定すると
ブラウザから/cgi_dirでC:\home\cgi_dirにアクセスできました。
しかしhttpdを終了して再度起動すると設定が/cgi-binとC:\home\cgi-binに
変わってしまいます。
レジストリのAliases部分で、/cgi_dirだけ残して他を削除してから起動するとその下に
/cgi-bin --- ドキュメントルート+\cgi-binが設定されてしまいます。
設定が保持できないと言うのが今の状況です。
前の書き込みで”/cgi_dirと指定するとドキュメントルートの\cgi_dirにアクセスするのは
当たり前ですね。失礼しました。
あ、私仕事をサボっているわけではありません。
こちらは今日から1週間、旧正月休みです。
knu (A.Musha) さん、
USER32.DLL の件は、その通りで、わざわざバージョンアップ法を書いておきながら申し訳ないのですが、抜けがありました。
対策は、1/26 13:43付けの おわびと訂正をご覧下さい。この下を user32.dll で検索すると2つ目くらいに出てきます。
初歩的な質問ですみませんが、自分のアドレスはどうやって知る事が出来るんですか?
あと、GetRightのレジュームが対応するサーバにする事は出来ないでしょう?
まくらです。中田さん忙しい中ご返事ありがとうございました。
えっと後もうひとつ質問なんですが、ネット上では正常に動くのにAp HTTPdでは動かない物があります。これは命令に一部使えない物が含まれているのでしょうか?
取りあえず大手のWeb裏技さんとかのを表示させてみているんですが、なぜかAp HTTPdでは動かない物があります。
度々すみませんがよろしくお願いいたします。く
今日は、中田さん
HTTPdの使用法のページを作っているWinBeeです
今まで気づかなかったとは。。。僕のページの圧縮ダウンロード分に
空のフォルダが上手くはいっていませんでした
ダミーファイルを入れて、修正しておきました
どうも。。。ダウンロードされた方と中田さんにはご迷惑をおかけしました
DOS/Vと98を10BASE-Tでクロスケーブルで接続しています。
OSは両方ともWindows95です。こういった環境でDOS/Vのを
インターネットにダイヤルアップ接続しておいて、DOS/Vのを
プロクシサーバにして98からWeb-pageにアクセスするといった事を
やりたいのですが、どうしたらいいのですか。
proxy.dllをhttpd.exeと同じフォルダに置くことはわかるのですが。
久しぶりに投稿させていただきます。
エラー報告ですが、0.9 beta 6から0.9 beta 6bにアップデートしたところ、起動時にAN HTTPDサービスが「USER32.DLLの初期化エラー」で強制終了してしまいます。
アップデート方法も指示の通りにしましたし、ファイルも正常に更新されています。どうしたものでしょうか。
中田さん、またまたお世話になります。
/cgi-binのフォルダ名ですが、お答えを見て久々にテストしてみました。
例えば/cgi-binのAliasをC:\home\html_dir\cgi_dirにした場合、ブラウザから
/cgi_dirと指定した時に、C:\home\html_dir\cgi_dirを見に行きますね。
中田さんの言われる自由に設定できると言う意味はこう言う事だったのでしょうか?
だとすれば、私完全に思い違いしてました。
疑いもなく左の/cgi-binが/cgi_dirなどに書き換えられる物だと思ってました。
ところで、そのテストで気が付いたのですが、\cgi_dirをどの階層に設定してもても
ドキュメントルートの\cgi_dirを見に行ってしまいます。
私の環境はC:\home\html_dirをドキュメントルートにしてあるのですが、Aliasを
C:\home\cgi_dirやC:\home\html_dir\xxx\cgi_dirに設定しても
C:\home\html_dir\cgi_dirを見に行くようです。
これも又私の思い違いでしょうか?
宜しく御願いします。(今回はNTではなく95の環境です。)
追加の質問です。
jgawk.exe というファイルは何処で入手すれば良いのでしょうか?
・・・どうも、馬鹿な質問でスイマセン
中田さん、ご指摘ありがとうございます。
ファイルの所在は確かなものでしたが、肝心の設定の方で
「httpd」とする所を、一部(cgi scriptsなどの所)「http」にしてしまっていました。
で、早速修正してやってみたところ、変化はありました。
SSIの方は、相変わらずで、中田さんのご指摘通りなので、一安心。
CGIの方が問題で、まず最初の「単純なテスト」のところをクリックすると
何故か、ファイルの(バッチファイルの)ダウンロードに入ってしまいます。
その次の「押して下さい」ボタンも同様にダウンロードになってしまいます。
「入力はGETを使って」のところでは「こんにちは」と入力して、ボタンを押すと
入力はQUERY_STRINGに入ります
QUERY_STRING=inputtext=%82%B1%82%F1%82%C9%82%BF%82%CD
という風に出ます。
その下の「もう少しまともな応答は」というところでは
入力された文字列は.コマンドまたはファイル名が違います.ですね
と表示されます。
「POSTを使って長い文章を入力(テキスト表示)」のところでもダウンロードが
始まってしまいます。
「POSTを使って長い文章を入力(HTML表示)」のところではちゃんとできている
・・・と思います。
どうなんでしょうか?
galahad さんへ補足。
B:\httpd に解凍したのであれば、
Options/General で
DocumentRoot B:\httpd
/cgi-bin -> B:\httpd\cgi-bin
として下さい。
どちらも前の設定がレジストリに保存されているので前のままになっている可能性があります。
解凍先が B:\httpd でない場合はそれなりに変えればいいのですが、どうすればいいか不明の場合は解凍先をお知らせ下さい。
galahad さん
なるほど。
SSIのサンプルのエラーは気にしないでください。
それは jgawk.exe を入手してインストールしないとそうなります。(不親切で申し訳ありませんが)
CGIのサンプルの方のエラーについてはそうなる理由がちょっとわかりませんが、
エクスプローラなどで、 B:\httpd\cgi-bin に test.bat やその他の xxx.bat が本当にないかどうか見てください。
本当にないのであれば、解凍がまだうまくいっていないように思います。 (解凍先は B:\httpd ですよね?)
吉田さん、どうも。
まだ1日目ですものね。2日目以降の負荷率増加があったらお知らせ下さい。
谷名さん、
/cgi-bin の指定は書き換えられるはずですが。。。
/cgi-bin も含めて一般的に Alias をいくらでも作れるようにする予定ではいます。
まくらさん、
ISAPI は とりあえずは高速CGI方式のようなものと思ってください。そして、ISAPIでは、perl.exe や jperl.exe を使う通常のCGIの場合と違って、PerlIS.dll を使います。
したがって PerlIS.dll を入手してインストールしていない場合は、Options/General の use perlIS.dll のところのチェックをはずして下さい。
何がなんだか良く分からないので、一度すべてをアンインストールしてから
再びインストールしました。
で、そこで気がついたのは、解凍の際に、フォルダ構造を無しにして
解凍していたので、全てが同じフォルダ内に集まってエラーが起こって
いたようです。
で、改めてやってみたのですが、まず。
SSIのサンプルページでのテストは滞りなく出来たのかな、と思いきや、
カウンタのところで
「あなたのアクセスは.コマンドまたはファイル名が違います.ファイルが
見つかりません.−tmp111番です.」
というエラーが出ました。
CGIのサンプルページでは、どのテストをやってみても
Error 404
Not found - can't find cgi script or executable B:\httpd\cgi-bin\***.bat」
というエラーが出ました。
はっきり言って正常に動作している部分がほとんどないです。
アドバイスを下さい。
吉田です。
さっそく6bをインストールしました。
今のところ順調です。
いろいろと早い対応ありがとうございます。
中田さん、バッチリ正常動作するようになりました。
素早い対応非常感謝です。
私の所は、スタッフが全員中国人で好奇心旺盛なので、ログインしないでも使える、サービス動作が必須でした。
本当にタイムリーでした。
後はcgi-binフォルダ名が自由に設定できるようになるのを期待してます。
(すみません、欲張りで。)
はじめまして、まくらっていいます。
Windows95でAn HTTPdをインストールしてPerlのテスト用に使用しようと
しているのですが、次のエラーの意味が良く解らない次第です。
ISAPI Error
Internal Error. See "errors.log".
ちみなにそのログは以下の様になっていました。
Mon Jan 26 13:11:28 1998 Error Response 403 for /index.htm
Mon Jan 26 13:12:23 1998 Error Response 403 for /cgi/index.htm
Mon Jan 26 13:12:58 1998 Error Response 404 for /cgi-bin/test.bat
このISAPI Errorとは一体どういう物なのでしょうか?
大変お手をわずわらせて恐縮ですが、よろしくお願いいたします。
おわびと訂正
NTでの 0.9 beta 6 から 6b のバージョンアップについて
谷名さん、ひじもすさんのいわれる通り、解説したバージョンアップ手順だと、 user32.dll のエラーになります。
申し訳ありません。
原因は、6b ではサービスを登録するときに新たにデスクトップ名をレジストリに設定するのですが、ここの値が beta 6 では正当でないためです。
原因はともかく対策ですが、一度 user32.dll のエラーがでた場合は、次の方法で対応してください。
(1)サービスが開始になっていたら停止
(2)レジストリエディタで、次に示すキーDesktopを削除
HKEY_LOCAL_MACHINE\SOFTWARE\AnHttpd\default\SVC\Desktop
(3)httpd.exe(beta 6b)を起動してServiceのチェックを一度はずす。
(4)再度 Service のチェックを入れる。
一度レジストリキーDesktopを削除してサービスを設定し直す、ということです。
これでうまくいくと思うのですが。
galahadさん
中田さんのおっしゃるとおり、ディレクトリがはっきりしてからの
話ですが。
perlのインストールは確かに分かって当たり前の解説が多いので
私も最初は苦労しましたので、次のURLにインストールの方法を
説明してみました。
http://www.infonia.ne.jp/~hamada/
perlをインストールするとシステムは自動でディレクトリを書き加えて
くれますので、anhttpdの方は通常はインストールしたままで動作します。
以上
はじめまして ひじもすといいます
ほかのhttpdとしてはapache(linuxとWindowsNT)を使っています
今回の環境はWindowsNT4.0 sp3 p6-200 です
ちょっと前からとっても便利に(何といっても設定が簡単)使わせてもらってます
バージョン6でNTのサービスに対応してもらって設定変更に苦労しつつも(^^;)
ちゃんと使えていたのですが、6bにバージョンアップしたところ
私も起動中に「user32.dllの初期化に失敗しました。」のメッセージが出て
ちゃんとは動作しませんでした
サービスのチェックを外して起動すると動作はしているように見えるのですが
認証ができなくなったりしています。今では6に逆戻りして使っています。
何か情報がありましたらお願いします
お世話になります。
6bにバージョンアップしたところ、サービスが起動される途中で 「user32.dllの初期化に失敗しました。」のメッセージが出て終了してしまいます。
バージョンアップの方法を間違えたのでしょうか?
サービスのチェックを外して起動すると正常動作しています。
galahad さん、
C:\httpd に httpd.exe があるなら DocumentRoot を C:\httpd としておいて、
http://127.0.0.1/readme.html
として、そこから、cgisample.htmlやssisample.shtml を開いてテストしてみてください。
一部 jgawk.exe がないとうまく動かないのもありますが。
それから galahad や public_html や perl の話にしましょう。
DocumentRoot C:\httpd
/~galahad -> DocRoot\galahad\public_html
/cgi-bin -> C:\httpd\cgi-bin
とするのがいいと思いますけど。
下の樹系図はなんか、間違ってます。
一番上がルートで、下のは、それぞれが一つ上のフォルダの
サブディレクトリです。
ええと、付属していたcgisample.htmlとその関連の*.batをpublic_htmlの
下に持ってきて、上記のhtmlを書き換えて、やっとこさ反応はするようになりました。
ですが、ほんとうにこの構造でいいのか良く分かりません。
ちなみに
httpdとまぁ、こんな感じです。配置の善し悪しご指摘ください。
|
+-perl
|
+-galahad
|
+-public_html
|
+-*ここにCGIのテストのヤツ
galahad さん
Options/General で parse CGI Output をチェックして、何かメッセージが(また英語ですけど)出てきませんか?
出てくるようなら、それをそのまま教えてください。
のりさん、
wwwboard.cgi の 264 行目に指定されたファイルがないわけですから、ファイル名を指定しているところ(多分スクリプトの最初の方)をさがして見直してみればいいのだと思います。
それでも不明であれば、264行目とそこに出てくるファイル名をどう指定しているかをお知らせください。
どうも、レスありがとうございました。
ですが、結局のところ事態はなんら好転しませんでした(泣
HTTPDのインストール自体は滞りなく完了したのですが、
Perlのインストールがどうも良く分かりません。
色々な皆さんのHPを参考にして最新版のものをインストール
したのですが、うまくCGIが動作しません。
細かい設定や必要な設定が良く分かっていないせいなのかもしれません。
Perlについてのインストールの解説は何処も基本的なことは分かって
当たり前という解説になっているので、初めてトライしている僕には非常に
つらいです。
誰かこんな僕に助言して下されば幸いです。
のりです。
先程はレスありがとうございます。
レスを頂いてすぐで申し訳ないのですが、
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
No such file or directory at a:\httpd\public_html\wwwboard\wwwboard.cgi line 264.
続いてこのようなエラーが出ました(^^;
何回もですいませんがよろしくお願いします。
のりさん、
require 'jcode.pl' で、jcode.pl がないというエラーですから、
a:\httpd\public_html\wwwboard に jcode.pl をコピーしておけば大丈夫でしょう。
galahad さん、
そうですね。詐欺みたいなものですが、オプションの日本語は(まだ)選択できません。
マニュアルは整備されていないので、
oidonさんの自宅マシンWWWサーバ化計画
WinBeeさんのTech&Tips− WindowsでCGI
あたりの解説を見てみてください。
nonkichiさん、
一度 Windows95 を再起動して、そのあと一時フォルダ(環境変数 TMP, TEMPに指定されているフォルダ)に、stdout.0, stdout.1 などというファイルがあったら削除して下さい。
こんにちは、のりといいます。
掲示板を作動していたら
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
Can't locate jcode.pl in @INC at a:\httpd\public_html\wwwboard\wwwboard.cgi line 45.
このようなエラーが出ました。
どうしたらいいのでしょうか?対処方法を教えて下さい。
お願いします。
え〜と、自宅でサーバやろうと思った不埒な19歳です。
んで。こちらにきてソフトをダウン、インストールしたのはいいのですが
モードが英語になってて良く分かりません。
オプションで変更しようとしたのですが駄目みたいです。日本語のところが
選択不能になってます。どうしたらいいのでしょうか?
あと、総合的(基本的)なマニュアルはないんでしょうか?
困ってます。
nonkichiです。
先程の補足です。
以前のコメント集も見ていたら同じ質問の方がいたので、その回答を見て直しました
”ExecProg for .pl, .cgi のところを単に perl でなくフルパスで、C:\Perl\bin\perl.exe ”にするです。
でも、同じエラーメッセージが出ます。
どうしたらいいでしょうか?
こんにちは、nonkichiです。
中田様のおっしゃるとおりでした
一応直ったのですが、次に掲示板を
動かそうと思ったら
Error 500
CGI Error - size of stdout is NULL
というエラーが出ました
これについての対処法を教えて下さい。
よろしくお願いします。
補足。
#exec cmd="\home\usr\xxx\..." でも大丈夫かもしれません。( \ ひとつ)
やしょくさん、
DocumentRoot D:\home\usr\xxx
で、/~username のところを
/xxx -> DocRoot\WWW
などとするのでは趣旨にあいませんでしょうか?
ここが、現在使える cgi-bin 以外の Alias に相当します。
#exec cmd="/home/usr/xxx/..." だと、現在の仕様では、DocumentRoot の 下 の home というディレクトリを捜してしまいます。
これがまずいのでしょうか。。
#exec cmd="\\home\\usr\\xxx\\..." だと実行するのではないかと思いますが。
なお、ひとつ(前の方)は消させてもらいました。
2回送ってしまいました.済みません.
SSIとサーバ・サイド・インクルードって同じですね,恥ずかしい(*^-^*)
perlで書いたのをSSI,テキスト挿入(include)をサーバ・サイド・インクルードって
勝手に使い分けてました(^^;
使わせていただいています.
用途は主にSSI/CGI/サーバ・サイド・インクルードのチェックです
少し困ってるのは,サーバ・サイド・インクルードの中のSSIが実行されてないようなのと
プロバイダ側が,CGIのパスをフルパスにしろと言っているので,そうすると
AnHttpで,SSI/CGIが思ったところに置けないことです.
exec cmdが
/home/user/xxx/WWW/cgi-bin/xxxx.cgi
だと,D:\home\user\xxx\WWW\cgi-bin\にxxxx.cgiを置かないと動いてくれません.
/cgi-bin以外もAlias出来たりしないでしょうか.
他に何か方法はないでしょうか.
とりあえず,今はフルパス用のフォルダを作ってコピーを置いています.
YAMU さん、
これはちょっとわかりませんねえ。
(全部半角で入れて)やってみましたが手元ではちゃんと動いてしまいました。
もうちょっとやってみますが、なかなか面白い話なのかもしれませんね。
西井さん、
了解しました。まだちょっと原因はわかっていませんが、できれば次のバージョンで対応したいと思っています。
古川さん、
とりあえず Options/General の parse CGI Output をチェックして、出てくる(はずの)エラーメッセージを見てみてください。
石橋さん、
DNSサーバ(named)の機能は残念ながらありません。
別に入手するしかないでしょう。95用のがあるのかどうか知りませんが。。NTのはありますよね。
私も機能を入れるにしてもその場合は別プログラムにすると思います。
ぷりさん、
確かに。
登録してあるユーザ名であればアクセスできてしまうようです。
これは次のバージョンで直します。
おおがみさん、
なるほど。これは Windows95 と WindowsNT の違いかもしれませんね。
Windows95 で 値がない(NULLの)環境変数がセットできるといいのですが。
確認してみます。
情報あったら教えてください。
AnHTTPDをインストールし、Perl実行環境も整えました。
ネットサーフレスキューさんのMINIChatも動く状態です。
しかし、下記のようなWhile文を使ったPerlのcgiを作成して
ブラウザ上で動かすと、処理が帰ってこなくなります。
(ビジー状態になってるようなんです。)
DOSプロンプトでの文法チェックや、
実行( Jperl cgiファイル名 )は、動作しています。
#!usr/local/bin/perl
print "Content-type: text/plain\n\n";
$a=0;
While($a<3){
print "TEST\n";
$a=$a+1;
}
cgiの記述が変なのでしょうか?
なお、私の環境はNEC版Win95です。
よろしくお願いします。
吉田様および中田様:
CPU高負荷の件ですが、当方の環境でも起こっています。
開始後1日経ったあたりでよく httpd.exe が 90% 以上になっています。
すごいソフト!便利で役に立ちそうです。
ありがとうございます。
CGIがローカルでテストできるので期待してます。
なにぶん初心者なので今からです。宜しくお願いします。
やっと、インストールして稼動させてみたのですが、cgisample.htmlは正常に
動作しました。が
現在、サーバ上で動いているcgiを実行してみると
Netscapeのメッセージで「文章が含まれていません」のメッセージが表示され
httpdのメッセージでは「Content-type」エラーとなります。
ちなみに、perlのシンタックスはOK!でした。
httpdはVer.0.9beta6です。
なにか対処の仕方があれば教えて下さい。
HTTPDのすばらしいソフトの公開ありがとうございます。
CGIも動くので掲示板も使え、それがローカルでテストできるので重宝です。
OCNでWWWサーバとしていろいろ実験をしたいと考えています。
ひとつ 質問があります。DNSサーバの機能もあるのですか?
独自のドメインを申請したいと思っていますが IPアドレスだけならドメイン
の申請は取りやめます。
>Auth1:/path1:user1
>Auth2:/path2:user2
>....
>のように設定すればいいのではないかと思いますが、意味が違うでしょうか?
意味はあってるんですが、
Auth1に登録されているユーザがAuth2では登録されていないのに
Auth2の認証が通ってしまうみたいなんですが...
なんか記述の仕方が悪いんでしょうか?
おおがみともうします。始めまして。
友人がWin95上でhttpdを動かしたいというので中田さんのAN HTTPを推薦しました。
私が動く事を確認したcgiプログラムが動かないというので調べたところWin95とNT(私の
環境)で動きが違っている事に気がつきました。
具体的には、サンプルで付いてくる"test.bat"を実行するとWin95では設定されない
環境変数が有るのですがこれはどうしてなのでしょうか?
抜けているのは set文で出力された環境変数です。NTでのみ出力された環境変数を
列挙します。
AUTH_TYPE=
CONTENT_TYPE=
DATE_GMT=
DATE_LOCAL=
DOCUMENT_NAME=
DOCUMENT_URI=
HTTP_COOKIE=
HTTP_REFERER=
LAST_MODIFIED=
PATH_INFO=
PATH_TRANSLATED=
PERLXS=
QUERY_STRING=
REMOTE_IDENT=
REMOTE_USER=
以上です。抜き出して眺めると、右辺に定義のされていないものばかりですね。
両方で設定されているものは、右辺が有るものだけです。
よこよこさん、
ブラウザはIEですよね(?)。
付属のCGIはバッチファイルなので、エクスプローラのオプションなどで MS-DOSバッチファイルの 内容の種類(MIME)を text/plain に設定してください。
shizu さん、
違うポート番号というと 8080, 8000, 8001 などが使われることが多いようです。
ただ、その前に、AnHTTPd が既に起動されているのに 二重に起動されていないか確認してください。
AnHTTPd は起動されると、デフォルトではタスクバー右端のアイコントレイに小さなアイコンがでるだけです。
タスクバーを自動的に隠す設定の場合は、タスクバーを出して確認してください。
吉田さん、
0.9 beta 6 では、コントロールパネルでサービスの操作をやるとおかしくなります。
また、サービスが登録されている状態で停止かどうかに関わりなく、 httpd.exe を起動する場合も想定していません。
お送りいただいた Dr.Watson のログについてはもう少し調べますが、いずれにしろ(今週末予定の)次のバージョンをお待ち下さい。
サービスで連続運転の場合の負荷についてはできる限り対処を考えますが、次のバージョンでも解消されないかもしれません。
のりさん、ご質問歓迎します。どうぞご遠慮なく。
nonkichiさん、
おそらく public_html というフォルダ名が public html というふうに、public と html の間が空白になっているのではないかと思います。
飯田さんへ
残念ながらDBアクセスは私はやってみたことはありません。
sybperl が perl for Win32 で使えるなら可能だとは思いますが。
ぷりさん、
Auth1:/path1:user1
Auth2:/path2:user2
....
のように設定すればいいのではないかと思いますが、意味が違うでしょうか?
なお、0.9 beta 6 およびそれ以前では、他のユーザ名の一部になっているようなユーザ名は避けてください。
たとえば、puripuri というユーザがあるときに puri というユーザ名は具合が悪いです。
はじめまして。CGIのテスト環境を作るためにHTTPDを使い始めました。
また社内LANで自分のマシンにホームページ作るのにも利用させていただいてます。
ですがどうも設定がまちがっているらしく?HTTPDに付属のCGIをテストしても、
動作する代わりにダウンロードになってしまいます。なんで・・・(;_;)
ローカルで、CGIを動かしたいので、
an httpdをダウンロードしたのですけれど、
httpd.exeを起動させようとすると
Could not bind server socket.
というメッセージがでてきてしまいます。
どうすればよいのでしょう。
ポートをかえるといいと、faqにかかれていますが、何にかえればいいのでしょうか?
なにぶん初心者なので、わかりやすい説明をお願いしたいです。
吉田です。
いつもお世話になります。
サービスの件ですが、httpdをサービスで連続運転しているとだいたい二日目くらいから
CUPの負荷率が95-99%になってしまいます。
設定のサービスのところをクリックし、一度閉じ再度設定を開くと、Running As service
(あってましたっけ?)と表示されていますが、クリックの印が消えています。
また、本日上記のサービスの設定/解除している時に一般保護エラーでhttpdが落ちました。
Dr.ワトソンのログは別途中田殿宛てにメールで送付しますので、よろしくお願いします。
こんにちは、のりといいます。
まだ初心者で勉強中なので困ったことがあったら
質問させてていただきますのでその時は
よろしくお願いします
こんにちは、nonkichiといいます。
先日、cgiを動作していましたが
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
Can't open perl script "a:\httpd\public": No such file or directory
というエラーメッセージが出てここから先に行けません
まだ、超初心者なので全然わからないので回避方法を
教えて下さい。よろしくお願いします。
中田様
これは、中田様に聞く問題ではないと思いますが、
ご経験があれば教えてください。
http096で動作するcgiにDBアクセスを
記述することは可能でしょうか? または ご経験がありますか?
ターゲットはSybaseで sybperlを つかおうと思っています。
perl は perl for win32 の最新版なので perl5
だと思います。
飯田
またまた質問です。
アクセスコントロールの設定で、path毎に入れるユーザを変える
ことは可能でしょうか?
井上さん、
何らかのcontributeをしていただければありがたいと思います。しかし、ソースも出していませんから本格的な事は難しいかもしれませんね。
私から言うのもなんですが、初めからWebSiteを使われた方がいいようにも思います。(Windows95でも動くはずですし。)
??全く分からない初心者です??
よろしく
吉田です。
よろしくお願いします。
初めまして.WebSiteを引き継ぐ必要性が生じたため,あまりWin95環境では
このようなことはしたくないのですが,installさせて頂きました.
まだ様子見なので何もcontributeすることはできません.使わさせて頂くという状況です.
あははは、凄いジョークが飛び交ってますね〜(笑)
……これが書きたかっただけだったりするので
飯田さん、関連で一応書いておきますが、
cgi-lib.pl が, require を書いた CGI と同じディレクトリにあるなら、
require 'cgi-lib.pl';
でいいはずです。
require は、リスト @INC に設定されているパスを捜します。
print "@INC\n"; として、@INC がどうなっているか見てみてください。
また、@INC の最後には . (カレントディレクトリ)があるので最初に書いたようなことになります。
push で @INC に追加してそこに置く、という人もいるようですが。
絶対パスで書くなら、
require 'C:\httpd096\cgi-bin\cgi-lib.pl';
または、
require "C:\\httpd096\\cgi-bin\\cgi-lib.pl";
でしょう。
多分 \ の代わりに / で区切って書いても大丈夫だとは思います。
なお、Windows95 で perl.exe, jperl.exe を使っているなら parse CGI output をチェックしておくと、今回のような場合はそれなりのエラーメッセージが出ますので原因がわかりやすいはずです。
切腹は延期だそうですが、自宅謹慎くらいでしょうかね。
中田様
最初の1行目の
require "c\\httpd096\cgi-bin\cgi-lib.cgi";
の ” を ’に変更したら
うまくいきました
ありがとうございました。
切腹は延期します
飯田
中田様
切腹するまえに最後の質問をさせてください。
以下のようなcgiを呼ぼうとすると、[ インターネットサイト
xxx/form01.cgiは開けません。
無効または認識されていない応答をサーバがかえしました。
となります。
最初の2行は無効でしょうか?
perl単独では文法間違いはありません。
冥土の土産にご教授ください
require "c:\\httpd096\cgi-bin\cgi-lib.pl";
&ReadParse(*in);
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title> フォームのテスト01</title>\n";
print "</head>\n";
print "your name :";
print $in{"name"};
print "</body>\n";
print "</html>\n";
中田様
大変失礼しました
print:文をcontext-typeの前に
つけるのを忘れていました。
切腹して、お詫びします。
中田さん、すばらしいソフトウェアに感激です。AN HTTP0.9 beta6を使わせていただいて
おります。 1台のWin95機にインストールし、一発でレスキューさんのminiBBSとCHATが
動いてしまいました。これでホームページを借りているサーバにわざわざ行かなくてもCGI
のテストができてしまいます。更なるバージョンアップを楽しみにしております。まずは
お礼まで。m(__)m
中田さん。ありがとうございました
ちゃんと動作いたいました。
これからも、がんばってください。
つよしさん、
これは Options/General の ExecProg for .pl, .cgi を jperl でなく perl にしてください。
吉田さん、西井さん、
NTでServiceにしたとき、再起動後一度もログオンしない状態ではサービスは起動しているもののサーバとして動いていませんでした。
また、アイコンも、デフォルトのデスクトップ (WinSta0\Default) でないと表示されませんでした。
改善中ですが、もろもろの場合も含めてちゃんとしたいので、来週くらいになりそうです。
こんにちわ
なんとか、perlの出力できたんですけどjcode.plをつかった記述がうまくいきません。
ウェブ裏わざからもらってきたminibbsなんですけど・・・
こんな、エラーメッセージがでます。
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
tr : both end of - should be kanji at A:\www\masa\public_html\bbs/jcode.pl line 229.
吉田さん、
うーむ、そうですか。確認してみます。
吉田です。
httpdサービス化ありがとうございます。
とっても助かります。
私のところでも、2,3前の西井殿がいわれるように、httpdがタスクバーに入りません。
実際には動いているのですが・・・
また、サービスを設定した状態でNTをリブート、ログオンが表示されますが、
この時にhttpdが起動されていないような気がするのですが、気のせいでしょうか?
ホームページが見れないと苦情がきて、ログオンしたら、見れるようになりました。
ただし、この時、上記にも記述した通りhttpdのアイコンはタスクバーにありません。
サーバなのであまりリブートができずいまいち確認に協力できないのですが、
何かわかりましたらまた報告します。
飯田さん、
「ファイルが開けません」というエラーメッセージがちょっとはっきりしませんが、
Error 500 で Can't exec というエラーなら、ExecProg for .pl, .cgi のところの指定をフルパスで C:\Perl\bin\perl.exe とかにしてみてください。
あとは /~username の置き換えを使っている場合のURLの指定のくいちがいくらいでしょうか。。
エラーメッセージが上のとは違うようであれば、その内容を教えてください。
BATの中身が表示される話は、たしかにブラウザ側でバッチファイルの MIMEタイプを指定をすればいいはずなのですが。
それでだめだとするとちょっとわかりません。
西井さん、
サービスの場合も、ログインすればアイコントレイに httpd のアイコンが出るはずです。
このアイコンの左または右クリックで出るメニューに Options があるのでそれで変更してください。
サービスの停止する場合もこの Options/General/Service でサービスのチェックをはずす、というやり方でないと再起動するはめになるはずです。
ここの仕様は改善しようと思っていますが。
中田様
飯田といいます。
現在、winntserver4.0上に httpd096とperl32winを 使用しよう
としております。
cgiを動かそうとしておりますが どうしても うまくいきません。
.plのままですと ファイルが開けませんとでて
batにすると 中身がそのまま表叔父されます。
faqのとおりに batを開くように ブラウザのオプションを変更したのですが
pl の内容は perl -wc で確認しました
print "Content-type: text/html\n\n";
print "<H2>Hello NT Perl World</H2>\n"; これです。
ご指導お願いします。
西井です。いつもお世話になります。
An HTTPD が 0.9 beta6 となり NT での Service 対応が
行われましたが(これは嬉しいです)、Service 化を行い
ログオン後に設定を見直すため Options/General や Proxy
項目などを変更するのに良い方法はありませんか?
従来のようにタスクバーに入りませんので Control Panel
から Service を一旦停止し、それからマニュアルで再起動
を行いタスクバーに納めて設定を行うのもあまりスマートな
方法ではないようですが...仕方がないでしょうか?
何か良いお知恵を拝借できればと思います。
宜しくお願い申し上げます。
中田さん。なるほど、詳しい解説ありがとうございます。
早速、直してみたところうまくいってるみたいです。
ありがとうございます。
SERVER_NAME (サーバのホスト名)からIPアドレスを得るには、マニュアル的には、
$host = $ENV{'SERVER_NAME'};
($name, $aliases, $addrtype, $length, @addrs) = gethostbyname($host);
($a, $b, $c, $d) = unpack('C4', $addrs[0]);
$ip_addr = "$a.$b.$c.$d";
で ホスト名に対応するドット表記の IPアドレスの文字列 $ip_addr が得られます。
これで(多分)接続時のプロバイダから得たIPアドレスになるはずです。
なお、実際にはもう少しスマートに書けるとは思いますが、まあわかりやすく、ということで。
すいませんまちがいました。
SERVER_NAMEにIPアドレスを入れるには?
でした。
中田さん、回答ありがとうございます。
HOST_NAMEにプロバイダが割り振ったIPアドレスを
入れるにはどうしたらいいんでしょうか?
さらに詳しく教えていただけませんか?
ぷりさん、
IPアドレスではありませんが、
$reload = "http://$ENV{'SERVER_NAME'}/....";
で一応できるかとは思います。
SERVER_NAME をIPアドレスに変換すればその方がわかりやすいかもしれません。
初歩的な質問です。minibbs.cgiを設置しようとしてるんですが、
reloadでURLを指定する必要があるんですが、これを現在の
IPアドレスを取得して自動的に更新するような手段は無いのでしょうか?
はたさん、どうもです。朝、直しました。
はたです。ちゃちゃです。
トップページのWhat’s Newの最新Versionが0.6になっています(^^;
それだけです。
NARITAです
先ほど書いたことが
解決しました。
大変お騒がせしました。
中田様 ご返事ありがとうございます。
初心者の私が
欲張って mini**s足る物を設置しょうと試みていますが。
ホームページ上からのURLを設定できません。
それと、このスクリプトをURLで設定とある設置するURLの意味が
私には、イマイチ わかりません。
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
Can't find string terminator "__TABLE_END__" anywhere before EOF at ./jcode.pl line 120.
と表示されてしまいます。
何処がおかしいのか教えていただけたら、嬉しいのですが
masao さん、
文字どおりには、board.cgi が Content-type: text/html\n\n を出力していないためのエラーのように思えます。
とりあえずは、use perlIS のチェックを はずして実行してみてください。
それで大丈夫なら board.cgi が Location: ヘッダを使っているものだと思います。
print "Location:..." の前に(もし print "Set-Cookie:..." があればその前に)
print "HTTP/1.0 302 Found\n";
を入れてから、use perlIS をチェックしてやればうまくいくのではないかと思います。
なお、PerlIS での Location: についての話は、ここのページ(ともうひとつ前のコメント集)を Location で検索してみてください。
浜田さん、お久しぶりです。
紹介して下さるのは大歓迎です。よろしくお願いします。
はじめまして。現在掲示板付きHP作成を夢み、鋭意勉強中のものです。
AN HTTPD、perlのインストールを終え、ローカルで htmlファイルが
読めるようになったのですがあるCGIを動かすと以下のようにエラーがでます。
ISAPI Error
Can't get response Header
Output Message:
HTTP/1.0 200 OK Date: Tue, 13 Jan 1998 10:39:22 GMT Server: AnWeb/0.9b6
'C:\www\oidon\public_html\board\board.cgi' script produced no output
このエラーが意味するものはなになんでしょうか?
初心者で的外れな質問かもしれませんが教えていただけませんでしょうか。
宜しくお願いします。
中田さん
このページはROMはしているのですが、最近仕事が忙しく
意見を記入していませんでしたが、またおじゃまさせていただきます。
下の方で紹介されていたcgiのMLに私も参加して勉強させてもらっています。
anhttpdの最新版を試していますが、かなり高速にcgiが動作するように
なったとの印象があります。
現在perlのインストール方法を私のホームページに紹介しましたが、次に
anhttpdも紹介させて下さい。
中田さん:
早速,ありがとうございます。
>>あと、$file は相対指定、ということのようですが、それにしたがうと
>>$file = '../../home/oz/mini**s/mini**s.dat';
これでLocalではしっかりと動き始めました。
プロバイダの方が../ってのを使わせてくれるかどうかです。
ありがとうございました。
OZAKI'S さんへ補足。
/cgi-bin については、ちょっと構成がはっきりしませんが、\httpd\cgi-binとなっているならもちろん、
/cgi-bin -> C:\httpd\cgi-bin
でいいわけですが。
OZAKI'S さん、
「記録ファイルの入出力にエラーが発生しました。」というのは掲示板やチャットのスクリプトが出すエラーメッセージでしょうから、ファイルのパスの指定のくいちがいじゃないかとは思いますが、ちょっとわかりません。
/cgi-bin -> c:\cgi-bin になっているでしょうか?
あと、$file は相対指定、ということのようですが、それにしたがうと
$file = '../../home/oz/mini**s/mini**s.dat';
とするのでしょうか。。。
かんのさんの、Perlで自作したC++のDLL については、私はわかりません。
これは perlxs の話でしょうか? Perl (for Win32)のドキュメントでは dll だか pll だかの話はあるのでやり方はあるのでしょうが。
一般論では引数や戻り値は使えるはずでしょう。。。けどやり方は(私は)知りません。
NARITAさん、何か変でしたらご質問下さい。今後ともよろしく。
速水さん、とりあえずそれで回避しておいて下さい。
ちょっとパッとは直せなかったので、近いうちに直します。
構成フォルダ:
c:\httpd(=localhost)
________\home\oz\minibbs\minibbs.dat
________________\minichat\minichat.dat
________\cgi-bin\oz
___________________\minibbs.cgi
___________________\minichat.cgi
はじめまして。OZAKI'Sと申します。
AN HTTPDをdownloadして,いろいろなcgiを試しているところなのですが,
掲示板やチャットなどで,cgiと書き込みファイルのフォルダを分離すると,
「記録ファイルの入出力にエラーが発生しました。」と表示され,正常動作
しません。同一フォルダだと正常に動くようです。
かなり基本的な部分でミスしてると思いますが,アドバイスお願いします。
OS:Windows95minibbs/minichatとも,
perl:pw32i315.exe+315j116b.exe
構成フォルダ:
c:\httpd(=localhost)
\home\oz\minibbs\minibbs.dat
\minichat\minichat.dat
\cgi-bin\oz
\minibbs.cgi
\minichat.cgi
はじめまして。
CGIのテストを行うのに、大変重宝しています。
HTTPdサーバのこととは、直接関係ないのですが質問させてください。
Perlで自作したC++のDLLを使用したいのですが、どのようにしたら
いいのでしょうか?
その時に、引数を渡すことができるのでしょうか?戻り値は取得できるのでしょうか?
大変あつかましいとは思うのですが、どなたかよろしくお願い致します。
初めまして、 NARITA といいます。
AN HTTPDを使わせていただきありがとうございます。
取り付けて動作確認が取れました。
これも、ユーザ皆様方のおかげだと思っています。
これからも、利用させてください
中田さんへ
さっそくご返事いただき恐縮です。
「DocumentRoot がルートの場合は」とお書きになっているのを見て、あっと思って
DocumentRootをサブディレクトリに移動してみたところ、前の設定のままできちんと
includeが動作しました。
というわけでひとまず問題は回避できました。ありがとうございます。
速水さん、
virtualの指定はそれでいいはずですが、DocumentRoot がルートの場合はちょっと自信がありません。
早速見直してみます。
はじめまして。つい先日AN HTTP Serverの存在を知り、利用させていただいています。
SSIやCGIをWindows上でテストできて、本当に重宝しています。
かくも便利なツールを公開していただき、ありがとうございます。
ところで今回のバージョンでSSIのincludeでvirtual指定が効かない部分が修正された
とのことですが、私のところでは相変わらずfile not foundになってしまいます。
環境としてはdocument rootがd:\で、/purapuraというパスをhomepage2という
ディレクトリに変換するよう指定しています。
このときd:\homepage2\include\footer.htmというパスをvirtualで指定するときは、
/purapura/include/footer.htmでは駄目なのでしょうか?
ちなみにサーバ上ではこの指定で上手くいくようです。
お忙しいところお手数をおかけしますが、よろしくお願いいたします。
中田さん、
早速のレスありがとうございました。
ご回答を参考に色々やってみた結果、動作しなかった原因は
ExecProg for .pl,.cgiの設定がjperlのままだったからでした。
これをperlに変更したところ問題なく動作しました。
また、ローカルでの動作もIE4をLANで接続にすると解決しました。
本当に丁寧なレスありがとうございました。
初めてCGIのプログラムが動作した時は感動的でした
(テストプログラムでしたが...)。
CASSIDYさんの、$hour==0 ? ですが、ちょっとやってみましたが、これでいけるようですね。
最後が $hour==23 ? "...": "...."; とかになっていれば。
だとすると、原因はちょっとわかりません。
梅さん、
parse CGI Output をチェックしてみてエラーメッセージが出ないでしょうか?
a.cgi の中身のタイプミスか、余計な行がはいっている(ペーストされている)かだとは思うのですが。。。
一行目の #! 以下のパスは(AnHTTPdでは現在のところ)読み取りませんから関係ないはずです。
なお、一度接続しないといけない件については、メッセージからするとIEでしょうから、
IE4であれば LAN接続 にしてみて下さい。
IE3なら、必要時に接続、をはずしてみてください。
CASSIDYさん
文章の表示のところは、$hour==0 ? "...": ではうまくいかないと思います。
$hour == 0 ? "...": "...."; という具合に 0 とそうでないときの表示だけしかできませんから。
if ... elif ... を使うか、switch を使うかじゃないでしょうか。
はじめまして。現在掲示板付きHP作成を夢み、鋭意勉強中のものです。
CGIを利用するためにローカルで動作確認する方法を調べている時に
中田さんのAN HTTPDなるすばらしいソフトに出会う事ができました。
ここまで試行錯誤しながらAN HTTPD、perlのインストールを終え、ローカルで
htmlファイルが読めるようになったのですが(なぜか一度ダイヤルアップで
接続してからじゃないと読めないのですが...)、CGIプログラムがどうしても
動作しません。
私がつまづいているのは、0からはじめるCGIプログラミングというHP
(http://www2a.meshnet.or.jp/~a-miya/a-miya/kd/kd6.htm)にあった
a.cgiという動作テストCGIを動かそうとしているのですが、ブラウザで開くと
インターネットサイト
http://127.0.0.1/umemika/public_html/cgi-bin/a.cgiを開けません。
無効なまたは認識されない応答をサーバが返しました
と表示されてしまうことです。私のカンでは一行目のperlのパスをなんと記述
すればいいのかわからないため指定していないのが原因でないかと思うのですが
どうでしょうか?
初心者で的外れな質問かもしれませんが教えていただけませんでしょうか。
宜しくお願いします。
本当に申し訳ありません。
文がHTMLではいるのを忘れてフォントの
色の設定をしてしまったため、自分のせいで
大変なご迷惑をおかけしました。
みなさんに大変不愉快な思いをさせた
ことを謝ります。
本当にすいませんでした。
NTではないのですがperlのパスをフルパス
にしたらとりあえず実行できました。
とりあえずというのは実は、いまhttpd
で試しているcgiは
open(COUNT,"$file");
$a=$_=<COUNT>;
close(COUNT);
$a++;
print "<center>アクセス総数 : $a回</center>
\n";
open(COUNT,">$file");
flock(COUNT,2);
print COUNT "$a";
close(COUNT);
($sec,$min,$hour)=localtime(time);
$now = "$hour時$min分$sec秒";
print "<FONT size=\"-1\" color=\"#00ff00\"><center>$now</center></font>\n";
print "<FONT color=\"#ffff00\"><center>\n";
print $hour==0 ? "おっと日付が変わった":
$hour==1 ? "そろそろ眠くなってきた?":
というソースでアクセス回数と時間毎にコメントが表示される
というcgiなのですがアクセス回数は表示されるのですが時間毎で
変わる文章が表示されないのです。これは一体どういうことなのでしょうか?
何か聞いてばかりで申し訳ないのですがお願いします。
CASSIDY さん、
DOSプロンプトで、perl -v として perlのバージョンが表示されるでしょうか?
「コマンド名またはファイル名が違います」というエラーになるとすると AUTOEXEC.BAT での PATHの設定が違っている可能性があります。
NTの場合は、AnHTTPd のOptions/General で ExecProg for .pl, .cgi のところを単に perl ではなく C:\Perl\bin\perl.exe などとフルパスで指定してみて下さい。
はじめて書き込みします。CASSIDYといいます。
CGIの動作チェック用に使わせてもらっていますが、
以下のようなエラーがでました。
Error 500
CGI Error - can't
exec "perl
C:\www\cgi-bin\cnt.cgi
", errorcode = 2, No
such file or
directory
autoexecのパスも確認しましたが
それはあっていました。
単純な質問かもしれませんが
どうか御指南宜しくお願いします。
中田さん、ありがとうございました。
次バージョンを楽しみにしております。^_^
katsu さん、
include virtual について、おっしゃる通りです。
次のバージョン(今週末を予定)で直しますのでしばらくお待ちを。
こんにちは。いつもお世話様になっております。
久しぶりに書き込ませて頂きます。
当方、Win95+09beta5cで使用させて頂いておりますが、
SSIのincludeコマンドで、virtual指定した場合に、
/~*****のパスを使用すると、SSIの実行エラー、
file not foundになってしまいます。
/~*****の部分をDocRoot\からの指定に置き換えると、
正常に動作するのですが・・・
コメントをお願いいたします。
すみません、リンクの訂正です。
PerlIS.DLL などの旧バージョン (PlISi3xx.exe)は、
ftp://ftp.linux.activeState.com/pub/Perl-Win32/Release/
でした。
PerlIS の場合の Location: については、確かに前に書いてありました。
なお、README の使用法の 10 の ISAPI対応状況 の中でも一応触れています。
対応法はそういうことなのですが、ちょっと補足しておきます。
Microsoft の IIS(PWSも?)では、ISAPI, CGI はいわゆる NPH(Non-Parsed-Header)スクリプトを前提にしているようです。
つまり、CGIスクリプトのレスポンスをサーバは見ない(パースしない)ので、CGIですべてのレスポンスを返すことが必要です。
ところが、それでは perl.exe を使った場合のスクリプトがそのまま使えないので(かどうかわかりませんが)PerlIS.DLL は、"HTTP/1...."がないときはデフォルトで"HTTP/1.x 200 OK"を最初に出力するようになっているようです。
ところが、Location: ヘッダを出すときのように 200でなく 302 を返さないといけないときにも 200 を返してしまうので、結局中身のない応答になってしまいます。(PlIS315ではこのあたりが少し変わっているかもしれません。)
なお、PerlISの設定でレジストリをいじれば勝手に "HTTP/1.x 200 OK" をつけないようにすることはできるようです。
というわけで、UNIXサーバでも IISでも AnHTTPd でも、そしてさらに perl.exe でも perlIS.dll でもちゃんと動く Perlスクリプトを書くのは、結構面倒なことになってしまいました。
(AnHTTPd で、ApacheモードとかIISモードとか作らないと。。。。)
PerlIS.DLL は、最新版は
http://www.ActiveState.com/software/
の下の方にあります。(PlISi3xx.exe)
ただし、Perl for Win32 (perl.exe) と同じバージョンのものを入れないといけないので、その場合は
Older Versions
の方から入手して下さい。
過去のコメントを見ていたら書いてありました。
大変申し訳ないです。
ちょっと遅いけどあけましておめでとうございます。
久しぶりの書き込みです。
perlISを有効にしたときにレスキューにある伝言板(minibbs v7.5です)
内容を登録したさいに「文書にデータが含まれていません」とでてしまいます。
(うーーむ。会社からの書き込みだから↑でよかったかちょっと心配ですが・・。)
エラー表示はでるのですが書き込みはできているのです。
そこで何がいけないかを探すためにスクリプトをみていったら「Location」でエラーを起こしているらしいのです。
この場合はどのように対処すればよいでしょうか?
「Location」は使用できるのでしょうか?
では、今年も皆様に良い年になりますように・・・。
PerlIS.DLLはどっからてにいれるのでしょうか?
中田さん
レスありがとうございます。
ネットワークコンピュータのプロパティで
ユーザ情報を変更したらサーバ名変わりました。
ぷりさん、
サーバ名は Windows95 で設定してある名前を使いますので、そちらを変えれば変わるはずです。
おそらく以下の順で決まるのではないかと思います。
(1)TCP/IPのプロパティでDNSを使う、にしてあればそこのサーバ名
(2)DNSを使わない設定なら、hostsファイルに記したホスト名
(3)hostsファイルもなければ、Win95のコンピュータ名(だったか?自信ありません。。。)
なお、ppp接続したときに割り当てられたホスト名もサーバ名になるはずです。
中田昭雄 さん
詳しい説明ありがとうございました
これからもよろしくお願いいたします
サーバ名の変更はできるのですか?
エスねこさん
PPP逆流&会議室、試してみました。
認証手続きがないのが楽でいいですね。 「未実装」の部分もおおいに期待してます。
山田さん、すさっこさん、どうもありがとうございます。
モヤイさん、
そうですね。Pw32i3xx.exeと3xxjyyyy.exe の xx が同じものでないと具合が悪いです。
もっともこれで最初に言われたような症状になるかどうか定かではありませんが。
AnHTTPd では #! /usr/local/bin/perl の行は(今のところ)見ませんからそのままでOKです。
いずれオプションでここを見るようにしようと思っていますけど。(#!/bin/sh なども使えるように)
すべてのCGI/SSIが動くとはいえません。たとえば以下のものは動きません。
(1) perlスクリプトで flock, symlink を使っているもの
(2) UNIXのコマンドを使っているもの
(3) UNIXのシェルスクリプト
特に date などのように Windows と UNIX で動作が違うものは要注意で、Windows(DOS)で date があると標準入力待ちになるのでそこでCGI/SSIプロセスが終了しなくなってしまいます。
それぞれ動かすようにするためには
(1) flock, symlink を使わないあるいは代替手段を使う(多分ロックファイルを使う)
(2) Windows95上で動くUNIXコマンドを手に入れてインストールする
(3) バッチファイルに置き換える、か、あきらめる
くらいが考えられます。
flockなどを使わなくした場合、AnHTTPd のオプションで SingleThread をチェックしておくとCGI/SSIプロセスごと flock したのと同じになりますのでそれでしのげると思います。
はじめまして。
CGIをローカルで動作させるのに使っています。
やってて疑問になったんですが
1行目は! /usr/local/bin/perl
で良いんですよね?
で、自分のところでは
どんなCGIは表示されないんですか?
全てのCGIがきちんと動くのかしら?
自分のサーバでやってみるとき
気を付けないといけないことって、どんなことですか?
あ、めっちゃアバウトな質問でした
すみません
下に質問を書きましたが
過去の質問を読んでましたら解決できました
どうやらPw32i315.exeと314j115b.exeをいっしょに使ったのが
いけなかったようです
組み合わせというものがあったんですね・・・(汗)
今後もよろしくお願いいたします
UDPがインターネットを殺してしまう場合もあるほど危険なのはわかってるんですが、どうしてもやってみたいんですよね。
2つばかりメリットがありまして、誰もサーバ役にならなくていいこと。つまりいつでも立ち上げていつでも落とせるように作れる(設計がよければ、ですが)。
もうひとつは開き直れることです(笑)。堂々と相手の返事を期待しない造りにして、『いやこれはUDPですから』って逃げられますんで。(^^;
ICQの動作を細かく調べてみると、応答なし時のリトライ等をやってないフシがあるんですね。
UDPは大規模社内LANなどでは 0.5% ほどの確率でパケットを損失するそうですが、ICQなどはもっと高い頻度で情報を失っているみたいです。
とりあえず、インタフェース部分の CGI を会議室と統合化して、いま設置を終えました。
UDP関連もオリンピックの頃までにはなんとかなってると思います。
ソース公開は4月あたりのつもりでいます。
中田さんをはじめ AN-HTTP ユーザの皆様、
新年あけまして、おめでとうございます。
AN-HTTPは今では切っても切れない重要なアイテムとなっています。
中田さんには大変に感謝しております。
それでは、年頭の挨拶のみで失礼いたします。
HTTPDはきちんと動いていたようでした
試しに、自分のHPのファイルなどを全て
d://www/****/public_html/にコピーしてアクセスしてみたところ
全てがOKでした
ただ、CGIファイルにだけ
アクセスできずに ↓の文字が出ました・・・
Pw32i315.exeどもです
やってみたところ、今度は
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
Perl.exe requires Build 315 of Perl300.dl
という文字が表示されました(泣)
Pw32i315.exeの解凍はd:\www/perlで良いんですよね
(私はDドライブに設置しています)
途中表示されるDOSモードでは
全て Y で良いんですか?
解凍に問題があるんじゃないかと思いますが・・・
モヤイさん、
LAN接続になっているとするとよくわかりませんが。。。
その状態で index.html は見られるのでしょうか?
index.htmlなどはIE4がキャッシュしているのを見ているとすると httpd が停止しているかもしれません。
httpd とIE4 と両方再起動してみても同じでしょうか?
perlがおかしいとすると何かの CGIプロセスが走りっぱなしの可能性もあるので、その場合は Windows の再起動が必要かもしれません。
そのあとやる時は httpdのオプションの parse CGI Output をチェックしてからやってみてください。
。。。というくらいしかちょっと思いつきません。
エスねこさん
そうですね。子プロセスを作るにしても親から引き継ぐものが他と競合しなければ大丈夫なのでしょう。
AnHTTPd ももう少しうまくやれば、CriticalSectionの範囲を縮められると思ってはいるのですが。。
UDPでよくやるなあと思わないでもないですが、まあそれはもう言わないことにしましょう。
あとは逆流計画の方で、でしょうかね(?)。時々チェックはしてますが、スクリプト等の公開があったらここにも書いて下さいね。
八子さん、どうもありがとうございます。
宮崎さん、
DocumentRoot が C:ドライブなら、
$sendmail = '/MyFilesC/Programs/WindML/windmail';
でも大丈夫だと思います。
なお、プロバイダについてはCGIが使用できても sendmail は使えないというところもあるようです。
はじめまして、モヤイといいます
今回、HTTPDをDLさせて頂き
使わさせて頂いております
で、おいどんさんという人が書いている設置解説を元にやってみたのですが
index.htmlを表示させるところまではうまくいったのですが
.cgiにアクセスしようとすると
「http://127.0.0.1/~aaa/hello.cgiにアクセスできません
サーバに接続できませんでした」
というメッセージが出て、CGIにアクセスできません
IE4.0を使っているのですが
下のコメントを見て、LAN接続でやっているのですが
うまくいきません
Pw32i315.exeの解凍の仕方がおかしいのかもしれません
よろしくお願いいたします
あけましておめでとうございます。
>具体的には、プロセスを起動する前に CriticalSection に入って環境変数を準備してプロセスを起動し CriticalSection から出ます。
おお、なるほどです。ありがとうございます。
UDP の場合は受信ポートさえ管理できていれば競合はなさそうなんで、今回はセマフォは入れない事にしました。
子プロセスを起こす部分が今後出てこないとも限らないので、その時点でもう一度スレッド設計を見直してみようと思います。
ちなみに今は受信命令のパーザの部分に突入しました。
HTTP などの解析と違って独自フォーマットでいいんで、案外早く稼動できそうです(INI ファイルと同じ構文ですからチャチですけど… (^^;)。
ブラウザからリンクをクリックするだけで PING なんかが立ち上がるトコロまでは確認しました。
そんなこんなで、今年もよろしくお願いします。_(..)_
はじめまして。
ついでに明けましておめでとうございます。
httpd は久方ぶりのお年玉としてありがたく使わせて頂きます。
今後ともいいソフトを作って下さい。
あけまして、おめでとうございます。
中田さん ありがとうございました。
#■SENDMAILの設定
#http://127.0.0.1/MyFilesC/Programs/WindML/
$sendmail = 'C:\MyFilesC\Programs\WindML\windmail';
今までは、2行目のような$sendmailの設定にしていたのですが、中田さんが、指摘していただいたように3行目のように完全なDOS仕様の絶対フルパスをしましたところ、見事に送信されました。使用時間わずか10分足らず、今まで悩んでいたのがうそのようです。
届いたメールを確かめてみると、文字化けせずに、きちんとした日本語で表記されています。CGIを利用せずにmailtoで送るより格段に良いです。
『す....すばらしい!!!』の一言です。
なんか、CGIが使用できる格安レンタルHPスペースがほしくなりました。
個人使用でお得な所、ないでしょうかね.....
あっ、いや、余分な事を言いました。
とにかく、ありがとうございました。
Take さん、どうもありがとうございます。
NT用はまもなくサービス対応になる予定です。
エスねこさん、お久しぶりです。
サーバは CGIとSSIのプロセスを起動する部分だけ同期をとっています。
サーバプロセスとCGI/SSIの子プロセスは環境変数を共有するのでこうしました。
具体的には、プロセスを起動する前に CriticalSection に入って環境変数を準備してプロセスを起動し CriticalSection から出ます。
なお、オプションの SingleThread をチェックすると、CGI/SSIのプロセスは終了するまで CriticalSection から出ません。
これは、チャットなど CGIのプロセスが同一ファイルに同時アクセスすることがある場合の保護です。 Windows95 で flock( ) が使えないので。
宮崎さん、
WebFORM で $sendmail の実行が成功したかどうかをどう判定しているのかにもよりますが、おそらく UNIXシェルを前提にしていると思うので、実際はエラーが起きているのかもしれません。
WindMail のInteractiveModeでないMode(CommandlineMode?)がうまく動くか確かめる必要があるのではないでしょうか?
あと、$sendmail は WindMail のローカルのフルパス(URLでなく)を指定するのだとは思いますが、多分これはそういう意味なのでしょう。。
あけましておめでとうございます。
諏訪さん、ひでさんをはじめ皆さん今年もよろしくお願いします。
WindowsNT4ユーザで、付属のWWWサーバを
IE4に壊されたので、ANに乗り換えました。なんか、余裕で
こっちの方がつかいやすいです。
あけましておめでとうございます
昨年はお世話になりました
今年もよろしくお願いいたします。
年頭の挨拶でした。