>Error 404
>みつかりません - ドキュメントがないか、読み込みができません。
これはどういうことでしたか。
チャンとドキュメントがありますのに...rectangleのところです
えむけいさん、
キャッシュの方で xyz がディレクトリなら、xyz以下のデフォルトファイル(.cache_welcome)が存在するかどうか調べるようにしましょう。
ぴゅあさんの言われるのは、30x を返して一回やりとりが増えるから、ということなのでしょうが、私は、どうも重い時間帯にアクセスしないからか、あまり気にはなりません。
このあたりの話になると、いやむしろチャットのリロードが、とか、画像が一枚多いのと同じ(これはサーバ側の問題ですが)だとか、いろいろあるようです。
実をいうと、この場合 AN HTTPD は 302 を返しているのですが、301 の方が良いようですね。
301 (Moved Permanently) だと、次からはブラウザ(のキャッシュ)が面倒見てくれているような気もします。
>えむけいさん
まず、HTTPdが「/」なしのURLの場合、ファイルを探した後にディレクトリを探しに行くと
いう点で通常の場合と同じ処理になっていた方が良いのでしょうが....
それはたぶん対処するのだろうとして
賛否両論あると思いますが、URLの最後がファイルで終わっていないときに「/」を付ける
のは常識というか礼儀だと思います。An HTTPdに関して言う内容ではないのですが、最近特
に重くなっているインターネット。ファイルでないのに「/」を付けていないとブラウザと
サーバの間で無駄な通信が行われてしまいます。これは更にラインを重くしてしまう原因で
す。最近、「/」を付けない人を多く見掛ける(特にNIFTYメンバー?というよりまわりにNIFTY
メンバーが多い所為か?)ようです。An HTTPdはチェッカではないので通常のサーバと
同じ動きをしてくれた方が良いのでしょうが、正しく記述するというのも必要ではないか
と思いますがどうなのでしょうか。
余談ながら、ちょっと気になったので一言....
たとえば「http://www.abc.ne.jp/xyz/」がキャッシュにあるとき、「http://www.abc.ne.jp/xyz」と書かれた(最後の「/」がない)リンクをクリックすると、xyzというファイルを作ろうとしてせっかくのキャッシュ内容が消されてしまうようです。
これは回避できないでしょうか?
永井さん、了解しました。
さくらいさん、
プログラムは、必要なDLLを、そのプログラムのあるディレクトリ、カレントディレクトリ、Windowsディレクトリ、Windowsシステムディレクトリ、PATHに設定されているディレクトリ、という具合に探しますから、 それでとりあえずは動きますね。
さて、そうすると、どうやって chat.cgi や cookie.cgi をコンパイルしたのでしょうか? という話になります。 Makefileでも使ったのでしょうか?
それにしても、現状の設定では、正常にコンパイルできるとは思えませんが。。。
もし、gcc のインストールの状態を調べるのであれば、
(1)GNU-Win32のバージョン
(2)DOSプロンプトで SET > SET.TXT とした時の SET.TXTの中身
(3)C:\AUTOEXEC.BATの中身
をメールででもお知らせ下さい。
設定名を環境変数で参照できるようにしていただければ、助かります。
あ、それからGNU-Win32の入手元ですが、以前中田さんが書いておられた「UNIX for Win32」のCD-ROMからインストールしました。
中田さん
思い余って(笑)、cygwin.dllをC言語チャットと同じディレクトリにコピーした所、正常に動くようになりました…。
しかし、おっしゃる通りにDOSプロンプトを開いてgcc chat.cとコンパイルした所
gcc: installation problem, cannot exec `cpp' : No such file or directory
と表示されます。
そこでcpp.exeをgcc.exeと同じディレクトリにコピーして(無謀でしょうか…)
gcc chat.cとしてみた所、今度は
chat.c:1: No include path in which to find stdio.h
chat.c:2: No include path in which to find stdlib.h
chat.c:3: No include path in which to find time.h
chat.c:4: No include path in which to find string.h
In file included from chat.c:6
function.h:1: No include path in which to find stdio.h
function.h:2: No include path in which to find stdlib.h
function.h:3: No include path in which to find string.h
function.h:4: No include path in which to find ctype.h
gcc: Internal compiler error: program cpp got fatal signal 33
と表示されました。
やはりgccのインストールに問題があるかもしれません。うーむ。
しかしチャットは正常に動いています…。
GNU-Win32のインストールフォルダはCドライブのすぐ下ですし、チャットが置いてあるのは
C:\www\pleiades\public_html\zwcで、どちらもフォルダ名にスペースはないのですが…。
高橋さん、
どうもありがとうございます。
もっとも私は ActivePerl についてはよくわかっていません。
永井さん、
現在の設定名を取得する方法は ない と思います。
おっしゃる通り、ドキュメントルートも変えて、というのがせいぜいかと。
設定名(やキャッシュルート)を独自の環境変数にセットするようにしてもいいのですが、どうしましょうかね。。。(?)
さくらいさん、
環境変数 PATH の設定がされているなら、たしかにちゃんと動くはずですね。
念のため、次の確認をしてください。(既に同等のテスト済みなら不要ですが)
(1)DOSプロンプトを開き chat.c がおいてあるディレクトリ(フォルダ)に移る。
(2)gcc chat.c とコンパイルして a.exe を作る。
(3)a リターンとして、「開始エラー」が出ないことを確認する。
ただし、chat.c があるディレクトリと gcc.exe があるディレクトリは別であることが前提です。
最後まで確認できるようだと、確かに不思議です。
そうなると、GNU-Win32のインストール先か AN HTTPD のドキュメントルートのいずれかが空白のあるディレクトリ名を使っているのがまずいのかもしれません。
中田昭雄さん
リンクありがとうございます。Another HTML Lintのついでたくさんのお客さんが来てくれました。最近、ActivePerlのBuild 506というのが出たのですが、インストールしてAn HTTPdと連動させたところ、問題なく動作したのでご報告します。
やっと、投稿できました。
まずは、お礼です。すばらしいプログラムを有難うございます。
私は、ダイヤルアップでインターネットしています。だから、ゆっ
くりページを読むには、オフラインで、と言うことになります。
このような目的には、ブラウザのディスクキャッシュは、あまり
に使いづらいものでした。AN HTTPd を知り、そのキャッシュ機能
に、たいへん満足しています。
CGI も使えるようになったので、AN HTTPd キャッシュに貯めた情
報を利用しやすくするために、キャッシュの一覧作成、キャッシュ
内を正規検索する CGI を作成して、楽しんでいます。
そこで、質問が一つあります。
CGI で AN HTTPd のキャッシュルートを得る良い方法はないでしょ
うか?
レジストリにキャッシュルートの情報があるのを見つけました。し
かし、実は、AN HTTPdを default と portable の2通りの設定で
使っています(キャッシュルートだけ違う)。
そのため、現在有効な設定が判らないと、レジストリから
キャッシュルートの情報を得ることができません。
各設定のドキュメントルートを違えて区別する方法を、思いつく
のですが、もっと良い方法があればと、質問する次第です。
中田さん
それはどこのPATHのことでしょうか?cygwin.dllはちゃんと存在しているのですが・・・。
GNU-Win32のPATHなら通っていると思うのですが。それともGNU-Win32を、ANhttpdと同じディレクトリにインストールした方がいいのでしょうか。
メールの方については、動かなかったのははっきり言って私の不注意でした・・お手数をおかけしてしまってすみませんm(_ _)m
Version 1.05 の不具合のお知らせ
Version 1.05 では、 .html で SSI/CGIなどを含む場合、IEではキャッシュの関係でSSIなどがうまくはたらかなくなってしまった(ブラウザのキャッシュを使ってしまう)ようです。
とりあえず、.html を .shtml にすれば正常に動作すると思いますが、次のバージョンでこのあたりを修正する予定です。
福島さん、
sendmail については、ここのページのひとつ前のコメント集(gbook.16.htm)を開いて、"sendmail"でページ内検索してみてください。
Windows上で使える sendmail についての書き込みがあります。
メールサーバ(SMTPサーバ)が必要になるわけではありません。
また、Unix用の sendmail そのものを Windows に移植したものもあるようですが、使ってみていないので。。。
その他、Perlスクリプトで直接 SMTPサーバに接続するようにもできます。が、これも、私は動かしてみたことがないので説明は省略させてもらいます。
さくらいさん、
Cygnus の gcc でデフォルトでコンパイルした場合、実行時に cygwin.dll を使うはずです。
PATH で指定されたディレクトリの中に cygwin.dll がみつからないと、エラー1157 になり、「プログラム開始エラー」のウィンドウが出ます。
現状では gcc -o chat.exe chat.c として作った chat.exe を DOSプロンプトで起動すると、同じ「プログラム開始エラー」になるでしょう。
gcc.exe のあるディレクトリに cygwin.dll はあるはずですから、gcc がちゃんとインストールされていればそのエラーは出ないはずです。
もちろん cygwin.dll を PATHの通った(たとえばC:\windowsなどの)ディレクトリにコピーしておけばそれでも動くとは思いますが。
また、メールでのお問い合わせの方ですが、
index2.html はあるとして、
kycgilib.cgi の
$windows='false';
のところを、
$windows='true';
にしてください。symlink を回避するようになります。
ダウンロードさせていただきました。
解らないことがあるので教えてください、
perl等落としてエイリアスに登録したのですが
sendmail入っていないですよね、メールサーバも
入れなければだめですか?
フォームからメール出したいのです。
初心者ですのでよろしくお願いします。
すいません、つけたしです。
ええと、チャットを読み込もうとするとはじめに「プログラム開始エラー」というという警告ウィンドウ(?)が出ます。
中田さん へ
どうもありがとうございました。
問題無くサーバ名を設定できました。
中田さん
おっしゃる通りに「EXE形式の.cgiを実行する」にチェックを入れてみましたが、今度は
上に
Error 500
CGI エラー - 以下のコマンドラインを実行できません : "C:\WWW\PLEIADES\PUBLIC~1\ZWC\COOKIE.CGI ", errorcode = 1157
下に
Error 500
CGI エラー - 以下のコマンドラインを実行できません : "C:\WWW\PLEIADES\PUBLIC~1\ZWC\CHAT.CGI ", errorcode = 1157
と表示されて実行できません…
一体どうなっているのでしょう…。
それと、もう一つ動かないプログラムがあるのですが、そちらは説明が少々ややこしいのでメールを出しました。何か分かりましたらよろしくお願いします。
さくらいさん、
gcc -o chat.cgi chat.c などでコンパイルした chat.cgi は Perlスクリプトではなくて、バイナリのEXE形式の実行可能ファイルになります。
オプションの 「EXE形式の .cgi を実行する」 (check .cgi if script/exe) のチェックを入れてください。
でないと、Perlスクリプトとみなして perl.exe を起動してしまいますから、おっしゃるようなエラーメッセージが出ます。
西岡さん、
Proxyサーバ と WWWサーバ のポートは分けて指定できるようにしようと思っています。
メールでの要望もあったので。 機能的にはわけた方がいいのだろうと思います。
それぞれのポートでリクエストを待つので、スレッドがひとつ余分にいりますが。
IPアドレスでのアクセス制限も別にいるかもしれません。
ぴゅあさん、
書き込み競合が起きるとうまく処理できなくなるようです。
DBM関係は、システムが dbm や ndbm (や、その他 *dbm) をサポートしていないと使えないのでは(?)。
さっそく舞い戻ってきてしまいました・・・・・。
CGIが動きません・・・・
C言語で書かれたチャットなのですが、GNU-Win32を使ってコンパイルしたのですが動きません。
フレーム式なのですが上の部分に
Unrecognized character \220 ignored at C:\www\pleiades\public_html\zwc\cookie.cgi line 1. Unrecognized character \003 ignored at C:\www\pleiades\public_html\zwc\cookie.cgi line 1.
下の部分に
Unrecognized character \220 ignored at C:\www\pleiades\public_html\zwc\chat.cgi line 1. Unrecognized character \003 ignored at C:\www\pleiades\public_html\zwc\chat.cgi line 1.
と表示されます。
プログラムの中におかしな記述があると言っているのは分かるのですが、コンパイルした後のものをどう変えればいいのかさっぱりわかりません・・・。
それともANhttpdでは、コンパイルしたCGIプログラムは実行できないのでしょうか?
中田昭雄さん、
Ver1.05を早速ダウンロードさせていただきました。
SMTP,POP3のポート番号を変更可能にしていただいたので、LAN上PCから
AN-HTTP経由のAPOP接続もできるようになりました。
いつも迅速に対応していただき感謝しております。
ところで、現在、HTTP,FTPのProxy(Gateway)ポートはHTTP(WWW)サーバ
のポートと共通になっていますが、両者のポートを異ならせた場合のメリット
・デメリットはありますか?
特に不自由を感じているというわけではありませんが、もしもメリットがあ
りそうでしたらProxy用のポート設定についてもご検討していただけると幸
いです。
>コスモさんに関して
まず、マシンスペックが低いということはないのだと思います。逆に高いからなのかも知
れませんが。
以前、An HTTPdのハングアップに関して調査したときに、ゆいちゃっとProを利用しまし
た(リロードだけで書き込みによるテストは行っていないので、書き込みによるものかも知
れませんが)。
マシンスペックは、5x86/133MHz(4倍速),メモリ24MBです(Win3.1全盛期の古い486
マシン)。また、WinNT4.0Sでのテストは確かまだ486/25MHz,24MBのときにやっていたと思
いますので、かなり重い状態であった筈です。
確か、An HTTPdは、v1.01かv1.02の頃だったと思います。設定はデフォルト状態,即ち
マルチスレッドで、ISAPIを使っていました(Perlだとマシンスペックが低い故にかなり重
くなるため、必要に迫られない限り使っていない)。
単なるテストでしたので、運用では変わってくるのかも知れませんので参考にはならない
かも知れませんが、一応。
もしかしたら、他のソフトとの関連ということもないとは言えないのかも知れません。
P.S.
DBM関係はISAPIでは使えないようですね。minibbs(最近のもの)はPerlを使わないと動
作しないようですが、なにが原因であるのかは調査していませんが、Perlを使ってもハング
アップしてしまうようです。サポートされていない関数とかあるのではないのかと思ったり
するのですが。
作っていたCGIもAn HTTPdのお陰で、かなり短期間に形にすることができました。まだ、
v1.03のままで、CGIの作成が落ち着くまではトラブルで時間がかかるのを避けるために
バージョンアップしていませんでしたが、v1.05を試してみようと思います。
コスモさん、
1. チャットなどでのフリーズについては、CGI/SSIのプロセス制御の 単一スレッド(SingleThread)をチェックすることで避けられないでしょうか?
2. ドキュメントルート以下以外に "AN HTTPD を通じて" 侵入するのは難しいと思います。でも、バックアップをしておく方がよいでしょう。
千秋さん、
どうもありがとうございます。
早速 Lynx2.8.1r1 for Win32 ダウンロードさせていただきました。今まで持っていたのは 2.7.1ac-0.97 でした。
たしかに、Borland C++ と聞くと親近感が湧きます。もっともバージョンアップは C++ Builder にしないといけないらしいですが。。。
今後ともよろしくお願いします。
ぷよさん、
SSIで タグ入り64kB超の出力(改行なし)をしてみましたが最後まで出てしまいました。
単なる HTML でなく、リンクや SSI を含む出力でしょうか?
はじめまして、AN HTTPdを最近つかわさせてもらってます。
そこで疑問に思った事を何点か質問させください。
1、ICQやGetrightを一緒に起動してる場合 CHATを走らせいると
フリーズする事があるのですがどうしてでしょうか。
(マシンのスペックが低いのかと、自分では思ってるのですが。)
2、専用フォルダをルートの下に作ってそこにAN HTTPDをインストール
してるのですが、ほかのフォルダ、ドライブに侵入される心配はないの
でしょうか?どうしても専用にドライブ切れないので。(^^;
環境
WIN95 CPU Pentium133Mhz Memory80MB
ICQ Ver 98a Beta Dll1.30(日本語化、チャット日本語済み)
Getright Ver3.2 試用中(日本語化済み)
AN HTTPD 1.03
CHAT ゆいちゃっとPro
です、アドバイスよろしくお願いします。
中田さん 本当にありがとうございました
pl, .cgi の(ExecProg for .pl, .cgi)のところを
フルパスで指定しましたら 動きました
httpdの方の設定だったとは・・・
僕の勉強不足で、質問するのにもうまく説明できず
お忙しい中 お手数をおかけしてしまいました
申し訳ありません
心より感謝しております
AN HTTPD には、非常に興味を持っています。
特に、Borland C++ を使って開発を行なっている
ものですから、どこか類似点を感じます。
Win32 上に、IIS や apache 以外のサーバがあるのは良いことです。
私も、Lynx という Web Browser を手がけています。
http://jolt.ime.yamagata-cit.ac.jp
を参照ください。
くぼたさん、
なるほど。
htm, html を新たに設定しても、灰色部分が優先されますね。
次の版では灰色部分も編集可能にしましょう。
とりあえずは、META タグとかで出せるのではなかったかと思います。
てとりるさん、
名前は、ネットワークのインストール内容にもよりますが、コントロールパネル/ネットワークの
(1)ユーザ情報 の「コンピュータ名」
(2)TCP/IP のプロパティ の DNS設定の ホスト名(+ドメイン名)
などで設定できるはずです。
瀬野さん、
そうすると、Perlスクリプトの CGI も動かないということですね。
SSIだけ動かないのかと思っていたので、ちょっと誤解していました。
.pl, .cgi の実行プログラム(ExecProg for .pl, .cgi) のところを単に perl ではなく、C:\Perl\bin\perl.exe などとフルパスで指定してみてください。
なお、「.pl,.cgi を PerlIS.dll で実行」にチェックが 入っていたらはずしてください。
はじめまして。
質問ですが、ファイルタイプ設定で同じ拡張子に対して
複数のMIMEtypeを設定した場合、どういう動作になるの
でしょうか?
具体的にやりたいのは、
htm,html > text/html; charset=ISO-2022-JP
という設定ですが、灰色部分は変更できませんので。
はじめまして、てとりると申します。
最近An httpdを始めさせていただきました、初心者です。
そこでお聞きしたい事があるのですが、
起動すると、サーバ名がいつも 「 --------」 となっているのですが、
名前を設定する方法はあるのでしょうか?
できれば自分のホスト名を指定したいと思っています。
中田さん すいません お世話になります
/isapi/isssi.shtmlは<!--#exec cmd="count.pl count"-->
<!--#exec cmd="date.pl"-->と<!--#exec cmd="getcwd.pl"-->
<!--#exec cgi="/cgi-bin/getcwd.cgi"-->が動いていません
パスの問題ではないと思うのですが・・・
DOSプロンプトで SSIのファイルのあるディレクトリ上で、perl *.cgi
とした場合は単にERROR とだけ出力されます
cgiが参照する*.datなどのパスも確認しました
どうしてこうなるのか 全くわけがわかりません
申し訳ありませんがよろしくお願いいたします
瀬野さん、
そうすると、/isapi/isssi.shtml はどうでしょうか?
これがOKなら、
*.cgi は、そのSSIのファイルと同じフォルダにあるでしょうか?
また、DOSプロンプトで SSIのファイルのあるディレクトリ上で、perl *.cgi として何かしら出力されるでしょうか?
さくらいさん、
解決したようでよかったです。
たしかに 1.04 を入れておかしくなったのは不思議ですが。。。
1.04 で特に画像表示が速くなったはずはないのですが、これもダイヤルアップの問題でしょうか。。。?
オプションのリモートホストの取得が"常時"になっていると接続状況が関係するかもしれませんが。
まあでも速いぶんにはよいとして、何かありましたらまたどうぞ。
omi さん、
そうですね。プロバイダのサーバ上は perl が多いと思います。
また、DOSプロンプト上で perl -c xxx.cgi と -c をつけると文法エラーのチェックをする、とか、-d をつけるとデバッグモードとかがあります。
perl -help で、オプション一覧が出ます。
西岡さん、
なるほど。了解しました。
APOPだと従来の USER/PASS方式が使えないのでポートをわけているのでしょうね。
私は qpopper を APOPつきでインストールして(ポートは変えずに)テストしていたので気がつきませんでした。
ぷよさん、
確かにバッファの問題のように思えますが、それらしいバッファはみあたらないので、調べてみます。
設定の問題ではないと思います。
中田さん、お世話になります
ご指摘のとうり <!--#echo var="DATE_LOCAL"-->は
動いています。何も出ないで動作していないと
思われるのは <!--#exec cmd="*.cgi"-->
cmd= "*.cgi" というものだけなのですが・・・
お手数かけますが、よろしくお願い致します
あ、そういえば1.04は1.03から比べて画像などの表示がすごく速くなりましたね。うれしいです。
これからも何かあったら書き込みますので、その節はどうかよろしくお願いします(礼)。
すいません〜〜〜〜どうもダイヤルアップネットワークに問題があったようです・・・。
(ダイヤルアップネットワークの)再インストール後には、1.04を入れてもきちんと動いています。
ただ、それまで曲がりなりにも動いていた(1.03を入れても動いていた)ものが、なぜ1.04を入れたとたんに駄目になったのかは少々不思議です。
とにかく、お騒がせして申し訳ございませんでしたm(_ _)m。
ぴゅあ さん
うんうん、具体的でわかりやすい解説を有り難うございます。
1998/10/18 08:20の書き込みは、保存版として確保しました。
An HTTPdは、あこがれの NTでも、走らせているんですね。
プロキシとかイーサネットやファイアウォールなどの概念は、
「わたしにゃ関係ないね」と避けていましたが、
向こうから、だんだん近づいてくるようです。
中田 さん
早速、ダイヤルアップのアイコンをあちこち置きました。
キャッシュも問題なくて、ダイヤルを切断して LAN接続のままでも、
Temporary Internet Files に残っていれば、iE4は、
「サーバに接続されませんでした」のエラーを出しません。
CGIのデバッグも快調です。
DOSでの>perl xxx.cgi の方が jperより厳しくて、プロバイダのサーバに、
近いようです。やっぱり 解釈担当から直接聞かなきゃいけませんよね。
"表\示" の件ですが、NN405では、JavaScriptの、
name = new Array(' 表\紙','案内',・・ に引っかかって、
変なタグのエラーメッセージを出してハング状態になります。
"\表\示" の方が良いようです。
中田昭雄さん、
以前にお願いしたProxyのAPOP対応がToDoでは対応済みとなっ
ていますが、上手く繋がりません。
私が利用しているプロバイダは、POP3のポートを110に、また
APOPのポートを112に分けて運用していますので、ポートの相
違が原因じゃないかと思います。
そこで、AN-HTTPのProxy設定画面でSMTP,POP3のポートを設
定(変更)可能にしていただけると助かります。
ご検討のほどお願いいたします。
はじめまして、「ぷよ」といいます。
HTTPDを使用して会社でイントラネットを運営しています。
大変便利なソフトです。がんばってください。(しかもフリーだし)
で、本題ですが、
<問題点>
SSIコマンドを使用して、C言語で作成したEXEファイルを起動。
[記述] <!--#exec cgi="v_h98b01.exe"-->
内部で処理して、HTMLのタグを出力(関数fprintf)して、HPを表示しています。
しかし、
fprintfで、たくさんHTMLタグを出力しすぎると、HPが最後まで表示しきれません。
なぜでしょ?
<検証>
EXEファイルを単体で起動(DOS窓で)したら、ちゃんと最後まで表示された。(DOS窓上)
→プログラムはおかしくない。
<なぜだろう>
1.HTTPDの表示するバッファ?の量をオーバーした?
2.私のどっか、設定が変?
できましたら、ご回答お願いします。m(__)m
<作動環境>
OS : WinNT4.0(もちろんIISは非稼動)
さくらいさんのは結果待ちですね。。
正常に切断されずに既に接続されているとみなされている、という感じですが。。
でも AN HTTPD をインストールしなければ正常(なのですよね?)、というのがわからないところです。
Masaoさん、
CGIスクリプト(Perlスクリプト)を実行しようとするとスクリプトの中身が表示される、という意味でしょうか?
たとえば一つ実例をあげてくださいますか(?)。
たとえば、http://127.0.0.1/~xxxx/test.cgi とすると test.cgi の中身が表示されてしまう、とか。
設定の問題かどうかまだわかりません。
fin さん、
WinNT4.0sp3で SSIの <!--#exec ...--> への同時アクセスがあると httpd のシェアタイムが 100% になってハング同然になる、ということでしょうか?
その <!--#exec 以下はどんな記述ですか? それともどんなSSIでもそうなりますか?
あと念のため AN HTTPD のバージョンを教えて下さい。
瀬野さん、
そうすると、<!--#echo var="DATE_LOCAL"--> などの SSI は動くということですから、動作しないSSIがどんな SSI か、ということになりますね。
<!--#exec cmd="..." --> というようなものでしたら cmd= 以下がどんな記述か教えてください。
動作しないというのは SSI のところに何もでないということですよね?
お世話になっております.
表示形態に"ウィンドウ"を追加していただいてありがとうございました.
ぴゅあさん
前々から、しばらくネットサーフィンした後にOutlook Expressでメールの送受信を行って「完了時に接続を切断」にチェックを入れておくと、接続を切る時によくハングしていました。
確かにANhttpdの問題ではないのかも…
のでとりあえずダイヤルアップネットワークを再インストールしてみました。
また1.04をインストールして、ダイヤルアップがどうなるか試してみます。
アドバイスありがとうございました。
>さくらいさん
今まで、異常終了,ハングアップ等したことはありませんか?
ブラウザの再インストール,ダイヤルアップネットワークの再インストール,An HTTPdの
再インストール,或いは思い切ってWinの再インストールをしてみてはどうでしょうか?
取り敢えず、スキャンディスクを掛けてみて、エラーが出るようであれば、壊れている可
能性大です(エラーが出なければ壊れていないという訳でもありません)。
中田さん
はい、何度かWindowsを再起動してみました。
モデムもオフにしてみました。
それと、オフラインではないです。オフラインだったら、接続するかどうかと聞いてきますので。それはなしでいきなりダイヤル状況というウィンドウが出ます。
1.04をつかって
チャットや、BBSをPC上でテストしたいのですが
Perlがエディタで表示されてしまいます。
これはhttpdの設定のせいでしょうか?
お世話になります。先日、1ファイル中に <!-- #exec行を2行記述で問題
が発生すると報告しましたが、どうも原因はそのせいではないと言うこと
が見えてきましたので改めて報告します。
2行ある場合でも正常に動作します。が、cgiを使ってない場合はプロセス
シェアタイムが 100%になることは全くありませんが、cgiを利用するページ
では確実(100〜1000アクセス程度)に起こります。
これは <!-- #exec 行が1行に比べ、2行の方が問題がお気易いというこ
とでした。
みなさんは、常時接続で外へつないでないのでしょうか?
うちでは、ほぼ毎日この症状になやまされています。CPU使用率が 100%
になってしまうと、シャットダウンすら出来ず(NTのサービスはシェル
よりも優先度が高いのかな?)泣く泣く電源を切っています。
こまった
中田さん
ありがとうございます 初心者のつまらない質問にお手数を
おかけし、申し訳なく思います
AN HTTPD は .htaccess は使わずともssiは動作するのですね
私が理解できないのは サンプルの ssisample.shtmlは
動いているのに 他のssiが動かないということなのです
オプションの SSIを許可する(Allow SSI for)で *.html にチェック
を入れて、".shtml"を".html"に変えてみたりと
いろいろ試してみたのですが・・・
どうぞ よろしくお願い致します
いとさん、
SSIで Last-Modified を返さないのは、一般に、送り返すドキュメントが SSIによりその時点の内容になるからだと思います。
SSI で 「ただいま 10月21日21時30分」と出しているのに、そのドキュメントの最終更新日時が10月8日だったりするのも変といえば変ですよね。
それはそれとして *.html については SSIを含むファイルの更新日時を Last-Modified で返すようにしてしまおうと思っています。
でも、オプションにすべきかもしれません。他の HTTPサーバとあまり違う動作をしてもどうかと思うので。
ギンペーさん、
デフォルトでは #! の行は見ません。 parse #! line(#!の行を調べる)をチェックすると、#! 以下を使います。
コンパイルしたEXE形式の実行ファイルの拡張子を .cgi として実行する場合は、check .cgi if script/exe (EXE形式の.cgiを実行)のチェックを入れてください。
.cgi が スクリプトか実行ファイルか調べてからそれぞれ実行するようになります。
yama2 さん、
それはよかったです。また何かありましたらお知らせ下さい。
もっとも私のところでは NT3.51 は消してしまっているのですが、まあなんとかなるでしょう。
瀬野さん、
AN HTTPD は .htaccess は使いませんので、それは関係ありません。
なお、Windows95/98/NT でもドットで始まるファイル名は使えます。(エクスプローラではそういう名前をつけられないだけです)
サンプルの ssisample.shtml は動くでしょうか?
また、拡張子 .html のファイルで SSI を動かすのなら、オプションの SSIを許可する(Allow SSI for)で *.html にチェックを入れておく必要があります。
中田さん、
SSIでもlastModifiedが返るようにしていただけると、大変うれしいです。
よく分からないので教えて欲しいのですが、
・現在lastModifiedが返らないのは、SSIで指定した /index.html、*.shtml、*.html
だけなのでしょうか?
・SSIで一般にlastModifiedを返さないのは、何か特別な理由があるのでしょうか?
情報閲覧者の立場からは、全ファイルの最終更新日時を見れた方が便利だと思います。
情報提供者の立場からは、見せたくないケースもありそうだなとも思います。
オプション設定で選択する方法もあるかもしれませんが、実現についてはお任せ
いたします。よろしくお願いします。
さくらいさん、
モデムも含めて電源を入れ直しても同じですか?
なお、「接続できずにキャッシュが表示される」ということは、ブラウザが「オフライン」になっているように思えます。
はじめまして、ギンペーと申します。以後、お見知りおきをm(__)m
今日、早速ダウンロードしてセットアップしました。
CGIのテスト&開発用にネットに繋いでいないパソコン(リブ100)で使用します。
自分のホームページに置いてあるCGIをセットしてみたところ、そのまま動きました(?_?)
UNIXとちがって、CGI文でのPerlの指定(#!/bin/Perl)がいらないのでしょうか?(違う指定で動いた)
あと、Cで書いたCGIを動かすにはどうすればいいのでしょうか?
(拡張子など、CGIだとPerlと認識するようなので)
あまり、この様なことに詳しくないので、その時々質問にくると思いますが、その時は宜しくお願いしますm(__)m
ではまた
前回、投稿した件ですが、WindowsNT側の問題でした。無事、AN HTTPD1.04はWindowsNT3.51で動作しました。本当にありがとうございました。今後ともよろしくお願いします。
はじめまして やっとホームページを開設し、
HTMLからCGIを始めようと言うところで、ある掲示版でHTTPDを知り
活用させていただいてます。大変 重宝し、感謝しております。
はずかしい質問なのですが・・・ CGIの動作テストは出来るのですが
SSIがどうしても動きません。OSは WIN95です。
".htaccess"を設定すればよいのでしょうが、WIN95では "."で始まる
ファイル名は使えません。ばかな初心者に御教授願えないでしょうか?
よろしくお願いします
中田さん
ええと、要するに、1.04をインストールした後に、(ANhttpdを起動しているいないに関わらず)ダイヤルアップ接続をしようとすると「ダイヤル状況」というウィンドウが出て、(普通なら「ダイヤル中」と出てダイヤル音がする所で)ダイヤルせずに、すぐに「ユーザ名とパスワードの確認中...」と出るのです。
もちろん接続はできず、キャッシュされているページが表示されます。
ということでした。説明が足りなくてすいません。
あらちさん、
了解しました。ファイルを複数指定できるようにして、指定した順番でさがすようにすればいいのでしょうね。
yama2 さん、
最近 NT3.51では動作確認していないので。。。
IIS で perl.exe を使っていたのでしたら特に変更はいらないはずだとは思うのですが。
「無回答」がでるのでしたら、Options/Generalの parse CGI Output で何かエラーメッセージは出ないでしょうか?
うまく動作しない CGI をメールで送っていただければ、わかるかもしれません。
さくらいさん、
ちょっとわかりませんが、1.04 を起動するとダイヤルアップのウィンドウが現れるという意味でしょうか?
症状から言うとダイヤルアップ接続で異常があったときのようにも思えます。
Windowsを起動後どういう手順でそうなるのか言っていただければ。
hj,b,jhbkhjk,hjb,kjhk
はじめまして。AN HTTPDいつも重宝させていただいています。
さて、下の方にもありましたが、URLの / で終わるページの場合
index.html以外にも、index.shtmlやindex.cgiを開くようにして
欲しいという要望に賛成1票です。
私のページは *.shtmlでないとSSI使わせてもらえないんで、
インデックスのページを全部 index.shtmlで作ってるんですよ。
ですからページ確認の時にいちいち「index.shtml」と入力しなければ
いけない訳で...index.shtmlを開くように設定できると凄く助かります。
ご検討よろしくお願いいたします(_ _)
はじめまして、yama2といいます。
とある掲示板でAN HTTP Serverのことを知り、早速Downloadしました。
僕は会社でイントラネット用のWebサーバ(WindowsNT3.51)を管理していまして、今まではIIS1.0を利用しています。今はAN HTTP Serverに移行しようと頑張っている最中ですが、どうしてもCGIが上手く動作してくれません。すべてのCGIが動作しないのではなく、一部のCGIが動作しないのです。/cgi-binを設定した場所では動作する(引き渡す値がある場合、動作がおかしくなるものもあります。)のですが、他のフォルダではダメです。対処方法はあるのでしょうか?メッセージは「サーバから無回答」が表示されます。(メッセージボックス)クライアントはIE4(Win98)また、IISから移行する場合、何かCGIで変更しなければいけないのでしょうか?
ちなみに、CGIはすべてPerlで作成しており、Perl.exeを利用しています。
今のままのIISではあまりにもバグだらけで困っています。どうか、教えてください。
はじめまして。
実は、先日ANhttpdを1.03から1.04にバージョンアップしたのですが、その翌日(今日です・・・)にダイヤルアップが正しく作動しなくなってしまいました。
どうなるかというと、ダイヤルアップのウィンドウ(?)は出るのですが、ダイヤルせずに直接「ユーザ名とパスワードを確認しています...」と出てしまうのです。
いつもIE4.0を使っていますが「インターネットオプション」が「LANを経由して接続する」ならばダイヤルアップのウィンドウは出ないですよねえ?
モデムやダイヤルアップ接続を色々いじってみたのですが治らず、思い当たるものが他になかったのでANhttpdをアンインストールしたところ正常にダイヤルアップするようになりました。
一体どういうことなのでしょうか・・・。
1.03の時は何の問題もありませんでした(ということはまた1.03をインストールすれば良いのか)。
マシンはVAIOのPCG-505EX、OSはWin95、メモリは32MBです。
とりあえずまた1.03を使うことにしますが・・・。
ここを見る限り他の方はそういった不具合は出ていないようなので、私のマシンに問題があるのかもれませんが、とりあえず、そういう事があったという報告まで。
いとさん、
CGIについても前にご要望があったのでアクセス時刻をLast-Modifiedに返すようにしてしまっています。
SSIもそうしましょうか?。。。
IEの更新時刻表示についてはなるほどわかりました。
TOMOさん、
システムリソースの減少はメモリを積み増しても変わらないと思います。
現在のところの対策は、
(1)AN HTTPD を動かすPCでは IE4 を起動しない
(2)CGIに手を入れて PerlIS(ISAPI)で動かす
の二通りです。
(1)は 単にIE4を終了しておくとか使わないだけでなく、 Windows98起動後絶対に IE4 を起動しない、という意味です。
もうちょっと AN HTTPD側 で根本対策がとれないか、考え中です。
弘龍さん、
そうですね。Perlを C:\Perl などにインストールし直した方が安全です。
ただ、レジストリの PERL と PRIVLIB の Program Files を Progra~1 に変え、PATHも Progra~1 にしてあれば動くはずだとは思いますが。。
この書き換え(またはクォーテーションでくくる)対策は近いうちにやるつもりではいます。
pop さん、
Perl が Pw32a316.zip など Alpha CPU用だったりするとそのエラーになります。
Pw32i316.exe という Intel 用をダウンロードしてください。
なお、Pw32i316.exe をインストールしたあと 316j118b.exe 以外の Jperl をインストールすると、Perl300.dll を 316以外のバージョンに書き換えるのでこれでも perl.exe が動かなくなりますが、エラーメッセージが違うと思いますので。
中田さん。
lastModified の件、*.html のチェックを外せば正しく表示されるようになりました。
SSI のカウンタを複数個使っているので、*.html にチェックをつけていました。
SSIとlastModifiedが両立しないので、痛し痒しなのですが、原因が分かりましたので、
対策を考えてみようと思います。ありがとうございました。
> (IEではどう見るのかよくわからない)
IE で最終更新日時を見る方法という意味でしたら、右クリック -> プロパティですね。
IEでは、LastModified が返ってこないときは、1601年1月1日 月曜日と表示されます。
いやー、すみません!
どうもパスの設定が不充分で、たしかにindex.html のないところを
さしていました。
ごめんなさい。
Windows98 のIEでうまくCGIがうごきました。
みなさん 親切なご指導ありがとうこざいます。感謝 m(__)m
とんでもない馬鹿な事をしていました。
お恥ずかしいのですが \nを忘れていたところがありました。
こんな未熟者にご支援頂き本当にありがとうございました。(^o^)/
こんばんは・・といっても朝ですが
アドバイスありがとうございました。その後いろいろ試してみました。HTTPDも1.04にUPDATEしてサーバはなんとか安定動作しております。ただひとつ問題なのはシステムリソースの減少です。最初88%のものが4時間後(その間数人の閲覧者の訪問とチャットを行っております)30%を切ります。これはLAN上で2台のPCからチャットにアクセスさせ10秒ごとに画面更新させて実験しても同様でした。これはCGIを使用することがシステムリソースを減少させるのでしょうか?メモリを増やす等で対処するいがい方法はないのでしょうか?
HTTPDを再起動させてもリソースが復活しなかったのでHTTPDの問題ではないのですがもしお分かりになれば教えてください。
WIN98・64M
よろしくおねがいします
中田さん、初めまして。
ベータ版の頃より主にCGIのテスト用として使用させていただいていました。m(_ _)m
この間、久しぶりに使用しているフリー&シェアウェアのバージョン確認のためにネット
サーフィンをして正式版になっていたのでダウンロードさせていただきました。
日本語化やISAPI対応など完成度がさらに高まって色々と試しております。(^^;)ゞ
とりあえず、PerlIS.dll をダウンロードして、高速で動くCGIを堪能したかったのです
が、エラーが表示されて正常に動作していないようです。
LoadLibraryEx("C:\Progra~1\Perl\bin\PerlIS.dll") failed with errorcode = 11
perl.exe と perlis.dll はいずれも「C:\Program Files\Perl\bin」にインストールされて
います。
上記のエラーが表示される前は、以下のようなエラーが出ていました。
LoadLibraryEx("C:\Program") failed with errorcode = 1157
ロングパスが正常に処理できていないと思ったので、レジストリをいじりました。
Perl のディレクトリをルートに置けば動作するようになるのでしょうか?
はじめまして、簡易サーバ?使わせていただいています(^_^)
最近OSをwin98に乗り換えたんですが95の時は大丈夫
だったのに98になると下記のエラーが表示されます。
CGI Error - can't exec "perl C:\a\x\pop\cgi3\m.cgi ", errorcode = 11, Invalid format
c:\perl\PERL300.DLLファイルはこのwindowsに対応するCPU用に
コンパイルされておりません。
と、いう具合に出てくるんですが、perlは95用とは別に98用
に入れ替えなくてはいけないのでしょうか?
場違いな質問かもしれませんがご指導いただけたらと思っております。
>omiさん(追記)
書いている間に中田さんからのレスが入っていたので追記しておきます。余談という感じで
すが。
SuperRASを使うと常駐しているので、自動運転以外にも、すぐにダイヤルアップできるとい
う点で便利ではないでしょうか。ただ、テレホ時間外は設定時間ごとに切断しようとしますの
で煩わしいという部分もありますが、逆にテレホ時間外に接続し過ぎないようになる?という
点では効果があるのかもしれません。
また、スタンドアロン動作の他にServer-Client動作をさせることが出来ますので、接続し
たいパソコンからダイヤルアップ操作を出来るので便利です。
ただ、欠点といえば、開発が止まっていることと、作者と連絡が取れないというところでし
ょうか。
WinGateはインターネットにアクセスしようとすると自動でダイヤルアップするように設定
することができますが、切断はWingateが動作しているパソコンで手動操作しないといけない
(ライセンスを取得すれば(このときフリーではなくなる)他のパソコンからも制御できた
と思います),テレホでの自動運転をサポートしていない(これが日本で作られたソフトで
あればテレホに対応していたことでしょう)ということがあります。
現時点では、WinGateとSuperRASを併用し、WinGateはプロキシ/ファイアウォールサーバ
としてのみ使用し、ダイヤルアップ機能は殺してあります。ダイヤルアップ機能はSuperRAS
を利用し、SuperRASのプロキシサーバとしての機能はWinGateで間に合っている(SuperRAS
では対応できないソフトがある)ので使っていません。
元々これらはルータを使わない(ソフト的にルータに「近い」ことをさせている。NAT
機能はないため、対応できないソフトもある)環境を対象にしているので、ルータを使って
いる環境では、たぶん充分な機能はしないでしょう(SuperRASの自動運転/ダイヤル機能は
WRATCH等とは違い、使いやすいのではないでしょうか。料金の集計が出来ないなどというこ
とはありますが)。
>omiさん
要はインターネットとAn HTTPdを(切り替えて)使いたいというだけで、わざわざモデムに
切り替えて使いたい訳ではないのですよね。
うちの環境はだいたいこのような感じになっています。
[Win95] −−−−−−−[WinNT4.0 Server]−−−>INS64
(192.168.0.2) (192.168.0.1)
An HTTPd(port:80) WinGate2.1(port:80)
ネスケ(port:80) An HTTPd(port:8080)
SuperRAS(Client) SuperRAS(Server)
ネスケの設定はLAN接続でserver:162.168.0.1,port:80に設定してあります。また、
プロキシサーバを使わないという設定に192.168.0.2:80(Win95側のAn HTTPdのための設定)
とか入れたりしていますが、これはあまり違いはないような?
ここで、WinNTS側のAn HTTPdのポートを8080にしているのは、プロキシサーバ(WinGate)
のポートと衝突しないようにするためであり、インターネット上に出て行くためにブラウザに
設定してあるポートがプロキシサーバ(WinGate)と一致するようにしてあります(ブラウザ
のポートとAn HTTPdのポートを合わせてしまうと、インターネット上での接続にポートを
指定しなければならなくなるので非常に不便になります)。
インターネットに繋げるときは、ダイヤルアップ接続を実行して(SuperRASによりWinNTS
またはWin95より接続制御/これは自動運転のために使っているだけで必須ではない)、
プロキシサーバ(WinGate)を介して接続する形となります。当然、ダイヤルアップ接続をして
いないとエラーが帰ってきます(従って、「サーバに接続されませんでした」という応答は
正しいものです)。
An HTTPdに接続する場合は、Win95側の場合、http://192.168.0.2/...という指定の仕方
で接続します。また、WinNTS側のAn HTTPdに接続する場合は、http://192.168.0.1:8080/...
という指定になります。これはダイヤルアップ接続の有無には関係しません。
ここで、WinNTSの場合にhttp://192.168.0.1:8080/...としているのは、WinGateの方で
port:80を使っているからです。ポートを指定しない場合(或いはhttp://URL(domain):80/...)
にはインターネット上に出て行きますが、port:8080を指定することでAn HTTPdを使うことに
なります。今はWinGateを通していますが、SuperRASでも同様になります(SuperRASはプロキシ
サーバなのでプロバイダのプロキシサーバに接続するようにSuperRASを設定することに
なります)。
URLにポートを指定しないとブラウザに設定してあるポートを使い、それとは違うポートを
指定すると指定されたポートに繋がっているもの(An HTTPd)に繋がると考えて間違いない
ものと思います。
要は、インターネットとの接点にプロキシサーバを用意し、プロキシサーバとAn HTTPd
を切り替えて呼び出せば良いということになると思います。
プロキシサーバは、WinGate,SuperRAS(WinGateより機能が少ない分軽い)や、Internet
Ninja(ASG)の体験版の中のNinja Proxy(これは試用期間を越えても使えるらしい)など
あちこちにあります。(結果的にNinja Proxyも含めて)全てフリーで使えるものです。
これでどうでしょうか。
IE 3.02でしか試していませんが、ネスケとLANの設定項目は同じですし、IE 4.01でも同じ
になっているものと思います。
An HTTPdのプロキシは試していませんが、これを使うこともできるのかもしれません(未
調査)。
ルータを使った場合どのようになるのかは判りませんが、参考になればと思います。
それほど詳しい訳ではありませんが、たぶん解釈は大きくは違っていないともの思います。
omiさんの環境が判れば、もっと具体的に挙げられるとは思うのですが、そんなに複雑なも
のではないと思います。
ここまで解っていて出来ないのだとすれば、お門違いですね。ごめんなさい。
なお、LANを構築していない場合は、直接ダイヤルアップ接続をすることになるので、
プロキシサーバは不要です。
omi さん、
IE4の LAN接続 というのは、単にダイヤルアップを起動しない、という意味のようで、実際にLANの有無はみていないようです。
(ダイヤルアップでキャンセルするとキャッシュのモードにはいるのだったか。。。)
私の場合は、ダイヤルアップネットワークのショートカットをデスクトップ上においておき、IE4はLAN接続のままで必要な時にダイヤルアップしています。
手間は似たようなものかもしれませんね。
CGIが動かないとき、Windows, Perl, HTTPD の3つのうちいずれの問題かわかりにくいこともあります。
「伝えた人」によく事情を聞いてみる、のがよいでしょう。
いとさん、
lastModified は、HTTPサーバが返す Last-Modified: ヘッダを見ているのだと思います。
一般に SSI の場合、サーバは Last-Modified: は返さないようです。
Netscapeで、 ページの情報 を見た時に、最終更新日時が不明になっているのは Last-Modified: がないためだと思います。
(IEではどう見るのかよくわからない)
AN HTTPD もそれにならって、SSIの時は Last-Modified: をつけません。
オプションの SSIの許可 で *.html にチェックがあると、すべての .html、.htm をSSIつきとみなして LastModified が得られません。
必要なければ、少なくとも *.html のチェックをはずしておくのがよいでしょう。
という、話じゃないかと思いますが。。。
SSIの許可がされていても実際にSSIがなければ Last-Modified をつける、という方がいいかもしれませんね。
ぴゅあ さん 中田 さん
何度も、ありがとうございます。
iE4 を 「LANを使用してインターネットに接続」 にしていると、
アドレスを打ち込んで、ページを開く時、キャッシュされていなければ、
”サーバに接続されませんでした”と、エラーが出ます。
ひょっとして、iE4 や AN HTTPD の設定を上手くすると、
LANを使用したまま、ダイヤルアップ接続できるのではないか。
とも思いますが、LAN ナシの環境で、出来るはずもないし。
ですから、 「モデムを使用して・・」に設定を替えるのですが、
iE4のインターネットオプションから入るのが面倒くさいので、
LAN/モデムを切り替えた値を抽出した、レジストリ結合用のファイルを、
2つツールバーに置いて、切り替えたいときにクリックしています。
REGEDIT4 は一行目に書かれる レジストリ結合用 を示すヘッダです。
AN HTTPD に、CGI の厳しい解釈モードを求めるのは、ホントに
筋違いですよね。解釈は Perl の担当なんですから。
”出来ませんでしたー”を伝えた人に ”おまえが何とかしろ”
と言ってるようで。 ホントに大反省。(~_~;)
JavaScript の document.lastModified が、httpd(v1.03)を通すと
01/01/70 09:00:00 となってしまいます。何がいけないのでしょうか?
ぴゅあさん、
解説ページは期待しています。でもまあ、じっくり作ってください。
akindo さん、
動作不安定とは、Windows98が、でしょうか?
(リソース減少ということでしょうか?)
カッシ〜さん、
現在のところ、index.shtml を開くようにはしていません。
index.html でも、/index.html に SSIを許可する設定にすれば、SSIを動かすことはできます。
index.cgi を、という話もありましたし、
index.html, index.htm, index.shtml, index.cgi
を開けるようにしましょうか。。。
他にもありそうですね。welcome.html とか default.htm とか。
うさぎ家さん、
どの設定が適当かはちょっと私はわかりません。
いろいろやってみるのがいいのではないかと思います。
それで、うまくいったら教えてください。
AN HTTPD v 1.03使わせていただいています。
Win98で動かしていますが、AN HTTPD を終了後動作が不安定になります。
しかし今回のバージョンでは エラーメッセージがブラウザに表示されるので
楽ですね。
こんにちは、ホームページの更新のときにCGIのチェックのために使わせてもらっています。
そこで、ひとつ質問なのですが、たとえば、URLのところでhttp://localhost/で終わっていたとすると
index.htmlが開きますよね。そのときに、index.shtmlを開くようにするといった設定は可能なのですか?
もし、よろしければ教えてください。m(._.)m
こんばんは、うさぎ家です
中田さん>レスありがとうございます、早速試そうとしているのですが・・・
>Q11-7.AutoNAT機能を使用して接続している時にローカルサーバを外部に公開したいのですが、できますか?
>
>【A】通常、端末型ダイヤルアップ接続で相手先に接続した場合、相手先からこちら側のサーバを利用することはできません。しかし、IPアドレス
>変換(NAT)テーブルを登録すると、相手先からこちら側のサーバへのアクセスが可能になります。IPアドレス変換(NAT)テーブルの登録
>は、[IP設定]画面の[オプション]で行います。
>という項目があります。
>実際の設定法の例もあるようです。
上記の設定法なんですが、当方の場合同じページにあったどの設定方法が妥当でしょうか?
128SOHOのオンラインヘルプも参照したのですが、いくつも例があっていまいちよく
わかりませんでした(初心者ゆえ申し訳ございません)。
ご存知でしたら教えて頂けないでしょうか?
やっぱり、ネスケが頻繁に固まっている所為で関連ファイルが死んでしまっていました(T_T)。
取り敢えず、再インストールで復活....
>ももさん
気にはなっていたのですが、やはり挫けずガンバってください。
パソコン環境では、それなりに変更しないと動かないものも多くある(そのままではWinが
ハングアップしてしまうものもある)と思いますが、適当に変更すると必ず動くようになるで
しょう。
因みにISAPIでは動かず、Perlにしなければいけないものも存在します(サポート関数の関
係上)。
(うさぎ家さんに関して)
やっぱり、NAT機能を使うとインタネと連結できるんですね。ブルータを手に入れるかど
うか....LANで同様の処理をしてくれるソフトがあれば良いと思うのですが、なかなか見
つからないです(>_<)。尤も、プロキシ/ファイアウォールサーバの一部の応答(TCP/UDP)
がどうも安定しないのが悩みの種ですが....頻繁にSocketエラーが出てしまうのも悲し
いか....
>つるりんさん(追記)
あと、
(6)ディレクトリ構造がパソコン上でテストしていたものから変わっていないか
(7)必要なデータファイル等が正しい場所に入っているか(パーミッションの設定を含む)
(8)CGI等の呼び出しのURLがサーバに対応したものに変更されているか
なども関係するのではないかと思います。
簡単なテストは
#!/usr/local/bin/perl
require 'jcode.pl'; # 注1
$\ = "\n";
print 'Content-type: text/html';
print '';
print '<HTML>';
print '<BODY>';
print 'やほー';
print '</BODY>';
print '</HTML>';
なんてのを動かしてみると良いでしょう。これで、Perl,jcode.plの存在も確認できる筈で
す。正確に確認するには、telnet接続で試すのが一番ですが。
注1:これはサーバ内にjcode.plなどが用意されている場合です。カレントに別に用意し
ている場合などは'./jcode.pl'などとします。
'text/plain'を使えばもっと簡単でしょうが、普段使わないので、確実なところというと
ころで'text/html'としました。m(__)m
なお、このソースではjcode.plがチェックされないように思われがちのようですが、構文
解析時に(たぶん)jcode.plの存在チェック,実行が行われる(jcode.pl内で初期化関数が
呼び出されている)ので、ちゃんとしたチェックになる筈です。
>K-SUMIさん
CPというのは、UNIXコマンドのcpのことでしょうか?
結局私は、ここのトップページにある「Cygnus の GNU for Win32」のusertools.exeを
使うこととしました。ただ、インストールしただけで、実際のテストは行っていませんが(^_^;)。
因みに英語圏なので、直接のURLを出しておきます。
1.トップページにすぐ見える「Download the Latest Release! (Beta 19)に入る。
2.適当なFTPサイトへ入る(go.cygnus.comとしました)。
3.gnu-win32-b19のディレクトリ下へ入る。
4.一番下のusertools.exeをダウンロード
直接のURLはftp://go.cygnus.com/pub/ftp.cygnus.com/gnu-win32/gnu-win32-b19/です。
>中田さん
An HTTPdの解説ページの方は遅れ気味です。というか、まだ準備だけで手をつけていない
(^_^;)。やっと、自作掲示板の方が形になってきたのでそろそろというところですが(インタネ
上で遊んでばかりでなかなか手を付けてないのがいけないm(__)m)。
色々と解説して欲しいというものが増えてきているので、優先順位をどうするかということ
もありますが、始まったらメールしますのでよろしくお願いします。
ああ、また、長くなってしまった....
すいませーん
CPってどう設定するのかわかりません
どなたか教えてください
ダウンロード先(すぐ判るアドレス)と簡単に設定教えてください
高橋さん、
どうもありがとうございます。最新版でテストしてくださっているのですね。
こちらからもリンクさせていただきます。
つるりんさん、
それは通常HTTPサーバが出す Error 500(Internal Server Error)の標準的なエラーメッセージで、要するに何かおかしいと言っているだけです。
何がおかしいかというと、 So-net のCGIの設定にもよるのですが、
(1).htaccess などの設定をする必要がある場合は、それがない、または、内容がおかしい
(2)スクリプト一行目の#!/usr/local/bin/perl の指定がプロバイダのPerlのフルパスと違う
(3)CGIの各ファイルのパーミッションの設定がおかしい
(4)require で指定しているファイルの指定がおかしい、あるいはそのファイルがない
(5)ファイル転送のモードを間違えている
などが考えられます。(他にもあるか。。。)
まずは単純な CGI でちゃんと動作するかどうかテストした方がいいと思います。
うさぎ家さん、
ルータのグローバルアドレス宛てのリクエストがローカルアドレス(192.168.0.2)に届けばよい、という話だと思います。
MN128-SOHO FAQを参照してみてください。
このFAQの AutoNATには、
>Q11-7.AutoNAT機能を使用して接続している時にローカルサーバを外部に公開したいのですが、できますか?
>
>【A】通常、端末型ダイヤルアップ接続で相手先に接続した場合、相手先からこちら側のサーバを利用することはできません。しかし、IPアドレス変換(NAT)テーブルを登録すると、相手先からこちら側のサーバへのアクセスが可能になります。IPアドレス変換(NAT)テーブルの登録は、[IP設定]画面の[オプション]で行います。
という項目があります。
実際の設定法の例もあるようです。
TOMO さん、
おそらくファイルアクセスの競合が原因ではないかと思います。
オプションの SingleThread(単一スレッド)のチェックを入れてみてください。
ももさん、
動かないということはないと思います。
再挑戦した時には、症状をお知らせ下さい。
中田さん、さらに確認していただいて恐縮です。確かにブラウザ側の処理みたいですね。単に私
が拙いだけですね。貴重な時間を割いていただきました。ありがとうございました。もっと勉強
します。
高性能なhttpdを提供頂きありがとうございます。
Another Html Lint(http://ring.aist.go.jp/openlab/k16/htmllint/index.html)
をローカルpcで動かすためにつかわせて頂いています。また、このレポートを
私のページ(http://member.nifty.ne.jp/hobbit/lint.html)で紹介させて頂いています。
はじめまして m(__)mようやくホームページを開設し、
HTMLからCGIへと進化しようと言うところでHTTPDを活用させてもらってます。
テストでローカルではHTTPDでOKだったんですが、さあSo-Netで開始と思いきや、
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.Please contact the server administrator, ux-adm@so-net.ne.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.
となりました。これってなんですか? 助けてください。(T_T)
みなさんはじめまして、うさぎ家と申します。
自宅でのWWWサーバのHP公開方法について、お伺いしたいことがございます。
HTTPD(1.03)とPerl用いて、自宅のマシンから外 部に掲示板やチャットを
公開しようと考えているのですが、ローカル環境でのページの表示&CGIの
動作確認などはできたのですが、外部に公開する段階において行き詰まっております。
環境は以下の通りです(NIC関係のみ)
H/W(一応、LANを構築しております、サーバ機以外にもクライアント
がいくつか存在しております)
ダイヤルアップルータ:MN128-SOHO DSU(192.168.0.1)
サーバマシン:通常のAT互換機(192.168.0.2)
サーバマシンのLANカード:通常の10BASE-Tのもの
なおIPアドレスは当然ローカルなもので、ルータのDHCPによる自動割付で
決定されています。
S/W
OS:WIN98
WWWブラウザ:I.E は 4.01、N.N は 4.06
中田さんのページからリンクが張られていた、”TOMの部屋(ご自宅サーバへのリンク)”
で登録を済ませて、自宅のページにアクセスを試みると、
使用しているダイヤルアップルータの設定メニューが表示されてしまって
サーバマシンのindex.htmlを見に行ってくれません。
当然の結果なのはわかっているんですが、どのようにして解決したらよいのかが
いまいちよくわかりません(CGIなどが出ていると聞いたんですが・・・)
ルータではなく、サーバマシンのほうにアクセスさせる方法をご存知の
方がいらっしゃったらご教授願います。
はじめましてHTTPD一週間ほど前に見つけましてさっそくダウンロードし翌日から使わせて
いただいております。劣悪な環境のプロバイダなもので自分のHPのTOPからリンクして
テレホ時のみ運用してます。
それで、HTTPDのサーバでチャットを運用し夜中じゅうチャットをしていますがしょっちゅうフリーズしてしまいます。これは昔IE3で経験したことがあるためIEの問題だと思いました。そのためLANのプロトコルをTCP/IPにしサーバはサーバのみとし別のPC
からチャットにアクセスし使っておりましたがやはりあるタイミングで同様のフリーズが起こるようです。ローカルアクセス(LANやサーバのPC)と外部からのアクセスが重なった場合
のような気もします・・・気だけです。
一応報告までですがまた何かわかったことがあればUPさせていただきます。
OS:WIN98 64M
では失礼します
ソフトも凄いけどレスも凄いですね。
中田様
やはりあのスクリプトだけはどうしても動かす事が出来ず断念致しました。
取り急ぎ用件のみ。又・・・。
>omiさん
そう言えば、何気なくさらっと見ていただけですが、LAN/モデムの切り替えとはどういう
場合に必要となるのでしょう?
REGEDIT4とはユーティリティの名前ですか?REGEDITやNotron Registry Editorより簡
単に操作できるものなのでしょうか?定義ファイルのインポートで行っているようですので
手で直すよりは安全かと思いますが、直接レジストリを操作するのはちょっと気が引けたり
します。(充分な安全性がチェックされた)専用ソフトを作って操作するのが良いのでしょ
うが。
IE4とNN4を使われているということで、IE4は....とありますので、IE4での接続方法
変更は面倒なのでしょうね。今はIE4を使わないようにしているので詳しいところは見えませ
んが。
ルータは使っていないので、その場合のLAN/モデムの切り替えに付いては良いものが思
い浮かばないと思いますので、あしからず。
そういえば K2 さんの # でちょっとやってみたのですが、ラベルの # 以下は、リクエストには付かないんですね。
つまり完全にブラウザ側で処理しているようです。
AN HTTPD の方で '#' 以下を調べる処理を書いた覚えはないな、と思ったのであらためて確かめてみました。
なお、'#' の他 ' '(空白)も、Netscape と IE とで違いがあります。
omi さんの関連で、
"表"の文字化けや $abc の話は、Perl の問題であって、AN HTTPD(やHTTPサーバ)の問題ではありません。
大半の方はおわかりでしょうが、念のため。
文字化け対策はおおかた出ましたが、あと、jperl を使う という対処法もあります(これも欠点がありますが)。
LAN/モデムの切り替えは、私はやっていません。
IE4 は LAN の設定のままです。必要な時にダイヤルアップしています。
原田さん、
わからないことが出てきたら遠慮なく質問してください。
...ぴゅあさんをはじめ皆さんも答えてくれるはずです。
K2 さん、
ごていねいにどうも。「解決した」というお話を聞くとうれしいです。
時によって質問から調べてみるとバグだったりしますから。
シンジさん、
そうですね。ここも時に難しい(ような)話になったりしますが、ご遠慮なく。
TigerCat ぴゅあ さん、
$abcと全角文字は、 . で加算するか , で続けるかします。
"表"は文字化けしてました。化ける全角には、\ を付加すればいいんですね。
NN4は、ブラウザだけでも文字化けするような・・。
hostsの 127.0.0.1 www3.airnet.ne.jp localhost の設定はやめて、
相対パスに書き替えました。
でも、サーバをだますような設定ファイルは、知ってても損しない気がします。
iE4 の LAN/モデム、切り替えが面倒なので、
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"EnableAutodial"=hex:0z,00,00,00
の z を 0 又は 1 にしたファイルを二つ用意して、作業環境を切り替えています。
もっと、簡単な方法があるんでしょうか。
懲りずにレスしています(^_^;)。
>omiさん関連
余談になってしまいますが....
"表示"は、確かに"表\示"という書き方で合っています。ただ、私は面倒なので気にしたこ
とはありませんが、偶然該当する文字を使わなかっただけかも知れません。
因みに、私は「print '表示しますよ',$abc,'こんなかんじで';」という書き方をしてい
ます(注:共通ライブラリを作って「$\ = "\n";」が常に実行されるようにしています)。
これは、シングルクォーテーションを使うことによってダブルクォーテーションを使ったと
きに行われる解析がなくなり無駄な処理を省けるのではないかという狙いがあります(もしか
すると、これにより"表\示"のような書き方を気にしなくて良くなるのかもしれません。未確
認)。また、各定数,変数間は「.」でなく「,」を使うようにしています。これは、「.」を
使うと一度演算が行われると考えてのことです。些細なことですが、インターネットという世
界で動かされるプログラムということでこのようにしています。
また、予め「$\ = "\n";」を実行しておくというのも、その効果を期待してのことですが、
使い分けないといけないという(一時的に変更するとソースが汚くなると思われる)場合は、
末尾に「,"\n"」を不可すれば良いでしょう。
一応、私のプログラミングの手法でした。
それと、未確認ですが、渡辺さんの提案されている「${abc}」はたぶん「表」の「\」コード
が「\$」として認識されてしまうため、たぶん効果がないのだと思います。余計なことでし
たら申し訳ありません。
もう一つの方法として、CGIをEUCコードで書くというのはどうでしょうか。NKF32を使えば
JIS<=>EUCの変換ができますし、同DLLを組み込むことでEUCコードのままでも編集できるエディタ
(確か秀ターム)や印刷ツール(WinLPrt)もあります。
EUCでは漢字コードに「\」が出てこないので、化けることはなかったと記憶しています。今
は面倒なのでSHIFT_JISに統一しようとしていますが。
なお、Perl内部での日本語処理はEUCに変換して行わないと正しく処理されないように記憶
しています(受け取ったデータをEUCに統一し(これはブラウザによってコードが違う場合が
あるので必須なのでしょう)、出力時に定数で使っている文字コードに統一するという手間は
ありますが)。
ただ、AN HTTPdで「\」に絡む問題がでないというのは、完全な日本語処理をしているから
なのでしょうね。
「127.0.0.1 www3.airnet.ne.jp localhost」に付いては、どうしてもそのようにしない
といけないのでしょうか?私の加入しているプロバイダはWebサーバとCGIサーバが分離
されているので、どうしても絶対パスにしないといけない部分がでてくるのですが、そうでな
ければ相対パスとするのが、記述も短くなり間違いも減るとも思うのですが。
私は定数としてベースとなるURLを定義して対処していますが(AN HTTPdで動かす場合はこ
の定数部分だけを変更すれば済む)。.htmlから.cgiを呼び出す場合はいちいち直すしかあり
ませんが、必要ならテスト用の.htmlを書くだけですので。
>K2さん(補足)
URL中の「#」というのはハイパーリンクを使うときに出てきます。従って、ブラウザによっ
て違うものもあるかも知れませんが、「#」を見つけた時点で、その後ろをラベルと見なして
しまうのでしょう。これは、AN HTTPdの関知する部分ではないと思います。
たぶん、AN HTTPdを通さないというのは、直接ディスク上にあるファイルを覗いているん
でしょうね。この場合は、たぶん勝手にブラウザが補正して処理しているのかな?という気が
します(AN HTTPdを通している場合はAN HTTPdに対して要求を出し必要な情報を得て、直接
ファイルを見ている場合はブラウザ内で直接処理している?つまり処理するルーチンが違う)
AN HTTPd,ブラウザ共に作者ではないので正確なところは判りませんが。
余計なことばかりでスペースを使って申し訳ありません。
ちょっと、今のページは大きくて重くなってしまいましたね。
私のカキコがどうしても大きくなっている所為もあるようですが。
ごめんなさい。
>ぴゅあさん・田中さんお返事ありがとうございます。
えっと、私の説明不足ですみません。ほとんど素人なもので、わからないことばっかりで・・・
独自のドメインって言うのは、www.会社の名前など.co.jpと言うことですよねぇ。
そうだとすると、独自のドメインがあります。
今、ぴゅあさんにお聞きした本で勉強しています。低次元質問ばかりで、ご迷惑をおかけしてごめんなさい。
"表示"って、"表"の2バイト目が"\"の文字コードなんですよね、たしか。\をかますのは"表"の後だけでいいんじゃないですか("表\示")?
あと、$abcの件については、${abc}と中括弧でくくってみてはいかがでしょう。ところでこれってANHttpdとは関係ない話ですよね?
「ANHttpdが親切過ぎて、自宅のテストでは動くのにプロバイダのサーバにあげたら動かなかった」というのは僕も経験あります。SSIのexec cmdで、プロバイダ側が「カレントディレクトリのスクリプトしか実行できない、おまけに引数はつけられない」っていう設定だったらしく、自宅のANHttpdで難なく動くカウンタなどが全く動かずに結構悩んだ覚えがあります。
中田さん、お返事ありがとうございました。プログラミングははじめてでわからないことばか
りで・・・書籍で調べるしかないのでストレスが溜まります。こういう場所があって、答えて
下さる方がいるととても助かります。無料で答えてもらって申し訳ないです。ほんとうにあり
がとうございました。
To) 中田様
> 日本語Windows を検出したらデフォルト言語を日本語にする、とするつもりでいます。
とんだ失礼をいたしました。これなら日本人にもやさしく、対外印象もよさそうですね(^^;
To) omi様
$abcの前後に日本語があるとエラーという件、perlスクリプト中では
print "表示しますよ$abcこんなかんじで\n";
とやってるんでしょうか。
print "表示しますよ" . $abc . "こんなかんじで\n";
とするといかがでしょうか。
ああ、そういえば、例で偶然出たんですが、「表示」という文は
ちょっと特殊です。
print "\表\示しますよ" . $abc ."こんなかんじで\n";
というふうに \ をかましてください。
TigerCatさん、
たしかに、hostsの改変、ANhttpd、iEのLAN/モデム、をごっちゃにするとハングします。Cache On せずとも、ローカルで Temporary Internet Files にキャッシュされます。
127.0.0.1 www3.airnet.ne.jp localhost の設定は、なんか具合がいいですよ。
現在の目的が、掲示板のバグ取りなので、これで十分です。
勉強になりました。ありがとうございました。
中田昭雄さん
お世話になっています。大変助かっています。感謝 _(_^_)_
早速、絶対パスを相対パスに直しました。
ログを見てもこの問題がないのは、他の人は問題が発生しないからですよね。
あぁ、私の今までの苦労は何だったのか。 私の人生は、いったい・・
Nhttpdはエラーしないのに、www3.airnet.ne.jp は、
Perl文の文字列の中の 変数 $abc と全角文字との間に半角文字かスペースがないと
文字化けするらしくエラーします。
厳しい解釈をモードが有るといいな。 でもキリがなくなるね。
Nhttpdはエラーしないのに、www3.airnet.ne.jp は、
Perl文の文字列の中の 変数 $abc と全角文字との間に半角文字かスペースがないと
文字化けするらしくエラーします。
厳しい解釈モードが有るといいですね。 でもキリがないですね。
>原田さん
そう言えば、そうですね@中田さんレス
「サーバも自分でやらなければいけない」というところに自社サーバを立てるつもりなの
かと思ったのですが。
独自ドメイン名が必要であれば、それなりの経費が掛かってしまいますが、そうでなければ
普通のプロバイダに入れば経費は微々たるものです。
現在掛かっている経費というのが、ドメイン名のものによるものか、ホームページ作成費用
なのかが書かれていないので詳しくは判りませんが、自社サーバを立てるには、月4万弱は
最低掛かるのでしょう。初期費用はクラスによりますが、40万程度なのでしょうか。
普通にプロバイダに入ってサイトスペースを得るだけなら、ホームページビルダーの使い方
を覚えるだけで充分です。
中田さんどうもありがとうございます。(^-^)
僕のような超初心者の質問にも答えてくれて
嬉しいです。
ここにかいてある事にざっと目を通してみた
けど何か難しいことばかり書いてあったので
気がひけたのですが、投稿して良かったです。
これからもよろしくおねがいします。
シンジさん、
これはいったいなんだ、とおっしゃっているそのエラーメッセージは、Perl が出しているエラーメッセージで、hello.cgi の中身がおかしいぞ、と言っているわけです。
メッセージから推定すると、hello.cgi の最初の行が、
------------------ hello.cgi --------------------
などとなっているのだと思います。
その行は削除してください。
#!/usr/bin/perl からが、hello.cgi の中身です。
また、念のため、最後の行が
-------------------------------------------------
だったら、それも削除してください。
K2 さん、
お使いのブラウザは MSIE で、「AN HTTPD を通さず」というのは http: ではなくて file: アクセスの場合、ということでしょうね(?)。
それを前提にすると、#**** という # から始まるファイル名を使っているのだと思うので、# の部分を %23 としてください。
つまり、"../**/**/#****" のところを "../**/**/%23****" としてください。
なお、http: の場合は(HTTPサーバが使うHTTPプロトコルでは) # は特殊な記号なので、ファイル名として # は使わない方がよいです。
さらについでに、Netscape では file: の場合も # を %23 とエンコードしないといけないようです。
k-taka さん、
なるほど、#! の方でしたか。それもありうるとは思ったのですが、文面から多分 parse #! line にはチェックはないだろうと判断してしまいました。
なにはともあれ動いてよかったです。
原田さん、
「サーバも自分でやらなければいけない」という意味がちょっとはっきりしませんが、サーバになるコンピュータは既にあるのではないでしょうか?
だとしたら、作成したホームページをそのサーバにFTPを使って転送すればいい、ということになります。
そうでなくて、サーバコンピュータをネットワークにつなぎ、その上で各種サーバソフトをインストールして設定する作業を自分でやらなければならない、というのであれば、ぴゅあさんも言われるとおりで、結構大変だと思います。
初めて投稿します。
AN HTTPDを使ってCGIのテストを
したら以下のエラーが出ました。
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
Can't modify constant item in predecrement at C:\www\sinji\public_html\hello.cgi line 1, near "hello."
syntax error at C:\www\sinji\public_html\hello.cgi line 3, near "print"
syntax error at C:\www\sinji\public_html\hello.cgi line 7, at EOF
Execution of C:\www\sinji\public_html\hello.cgi aborted due to compilation errors.
これはいったいなんなのでしょうか。
どうすればいいのでしょうか?
まったくのホームページ作成初心者のため、どうしたらいいのか
わかりません。
誰か教えてください。
はじめまして。今日はじめてAN HTTPDのことを知り、さっそくダウンロードして使わせても
らっています。いまホームページを作っているのですが、同一ページ内のリンク設定がうまく
いかず、エラー(403)になってしまいます。AN HTTPDを通さずに表示させると問題ないのですが
何か設定がおかしいのか、原因がよくわかりません。恐れ入りますがどなたか教えていただけま
すでしょうか?
NT4.0SP3でIE3.02でフレームを使っています。ひとつのページ内に5つほどリンクがあり(フレームa
として)、別のページにそのリンクメニューを作って(フレームbとします)、フレームbの
リンクメニューをクリックするとエラー403がでます。リンクのパスが、"../**/**/#****"と
あって、もしかしてこの#が原因なのかなとも思うのですが、わかりません。
まだホームページを作り始めたばかりで初歩的な質問かもしれませんが、教えていただけたら
幸いです。長々とすいません。
>やまさん
127.0.0.1はローカル接続なので、
自分のIP入れないと他の人はアクセスできませんよ
k-takaです。
さっそくのレスありがとうございます。
parse #! line にチェックがしてあったため ExexProg for .pl,.cgiが生きて
いなかったようです。
助かりました。ほかの方々の「動いたときの感動」を味わうことができました。
失礼します。
>原田さん
サーバソフトとしては、An HTTPdで充分であると思いますが、その他にも色々やることが
あります。
これはWindowsNT4.0 Serverを使うことを前提とした書籍ですが、基本的なことは同じで
すので、参考にはなると思います。一応、読みやすい本だと思いますので紹介しておきます。
「インターネットサーバを自分で作る本」CYBIZ(サイビズ) \2400+税
ISBN4-916089-08-1
なお、サーバを立ち上げるには、この他にも色々と勉強は必要でしょう。
はじめまして。
お願いがあります。私の父の会社(小さな会社)のホームページを作りたいのですが・・・
どうしていいのかぜんぜんわかりません。どなたか教えて頂けないでしょうか?
今は、どこかの会社に頼んで作ってもらっているようなのですが・・・ それでは、経費がかかりすぎてしまうので、私が作る事にしたのです。
一応、ホームページ作成ソフト(ホームページビルダー)は、今日買ってきて勉強していたのですが・・・
父に、サーバも自分でやらなければいけないと言われてしまって。
どうしていいのかわからず困っています。
よろしくお願いします。
k-taka さんへ追記。
商業目的でも使用していただく分にはまったくかまいません。
このページで co の方は確かに少ないかもしれませんが、メールの問い合わせでは結構いらっしゃいます。
大きなバグのお知らせ
エキストラパスがついた(PATH_INFOを使う)CGI が バージョン 1.00-1.03 では正常に動作しません。
たとえば、http://127.0.0.1/cgi-bin/script.pl/extra/path など。
最も遅くて10月18日までに直す予定です。
やまさんの動作環境、設定の状況がよくわからないので、今メールでいくつか聞いています。
やまさん、まず、メールの問い合わせに(メールででもよいので)お答え下さい。
その後のご質問には、状況を確認でき次第、順次お答えしていきます。
久貝へ、
エラーメッセージ自体は index.html がない、ということなのですが。。。
httpd側でアクセス制御関係がセットしてあって、Netscape と IE でプロクシの設定が違う、ということはありませんか?
でないとすると、ちょっとわかりません。
ももさん、
すると、とりあえずはよいとしても、前者の掲示板はまだ動かないということでしょうか?
どうも変だ、ということでもありましたら、状況をお知らせ下さい。
k-taka さん、
NTのそのエラーは、perl.exe が起動できない状態だと思います。
ExecProg for .pl, .cgi のところをフルパスで C:\Perl\bin\perl.exe などと指定してみてください。
熊野さん、
プロクシサーバの用途は複数のPCからプロクシを通してネットワークにアクセスするということだと思います。
特例としてプロクシサーバのキャッシュ機能を利用するために、ひとつのPCでもわざわざプロクシ(キャッシュ)サーバを経由させる場合もありえます。
さらに匿名アクセスのために使うということもあるでしょうが、現在の AN HTTPD のプロクシ機能はそれには使いにくいはずです。
FTPサーバの機能はありません。AN HTTPD とは別にFTPサーバを用意する必要があります。
WarFTPD とかは(確か個人使用はフリーで)機能豊富です。
Microsoft の PWS は HTTPサーバの機能と同時にFTPサーバの機能も持っています。
山崎さん、
確かに、長いファイル名が連続している場合にそうなることがあるのを確認しました。
対策をとりますのでしばしお待ち下さい。
fin さん、
私のところでは、ちょっとまだ再現できていませんが、引き続き調べてみます。
単体html中の #exec は逐次処理のはずなのですが、前のものが完全に終了する前に2番目が起動されるのかもしれません。
特にファイルへの入出力をするものだと動作がおかしくなる可能性はあるかもしれないと思います。
SingleThread をチェックしても様子は変わりませんでしょうか?
全く門外の質問かもしれませんが御願い致します。
たとえば、自分では http://127.0.0.1/cgi-bin/minibbs.cgi
にアクセスできるのに、ほかの方が出来ないというのはどういうことで
また設定でどういう記述をすればよいのでしょうか????
ご無沙汰です。
httpd重宝しています。
が、Win98のIE4.0では、動作しません。
NetScape4.05では動きます。
どうしたら、IE4.0で動くようになるでしょうか?
エラーは、
Error 403
You are not allowed to get Index of this directory
となります。
よろしく。。。
中田様
早速のレス有り難うございます。
現在動いている、私の部屋の掲示板とゲストブック・・・(試験的に)前者が動かなかったものですから・・・。
でもお蔭様で後者はローカルでテスト出来て過去ログ切り分けと同時に少し化粧直し出来ました。
私は未だ(恐らくこれからも)自分でスクリプトを書くことは出来ません。
従ってこのようなソフトウェアがあること、しかもフリーウェアで提供されていることが本当に助かります。
はじめまして。
先週からCGIを始めたものなのですが、質問があります。
POSTでCGIを呼び出すと以下のようなエラーが出ます。
----------
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
指定した名前は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されません
----------
私なりに考えられる対応(PATHの設定、ドキュメント・ルートの設定、
DOS上でPERLが動作するか等)を過去の質問を参考にいろいろ
試してみたのですが、はっきりいってお手上げ状態です。
どうか考えられる原因をご教授ください。 よろしくお願いいたします。
動作環境は OS:WindowsNT4.0 PERL5.001です。
あとテスト的にHTTPサーバとしてダウンロードしてきたのですが、
使い勝手がいいので、これからも使っていきたいと思います。
そこでこのソフトは営利がからむ商業目的に使ってもいいのでしょうか?
そこのところも教えていただけますか?
皆さんのメールアドレスを見ていると、orやacの方が多いように感じられたもので・・・
以上 よろしくお願いいたします。
こんな事をしてもいいのですか。いけない時はごめんなさい。
ここへジャンプできますか?
いつやらURLのこと書いていただいたものを、見逃しています。
手をとられ、足をとられ、ひとつひとつ、厄介でも面倒見てください。
お手数ですが、2点お教え下さい。
一つ目は、「プロクシとして動作させる」ということについて、具体的にどのような
用途を考えればよいのかということです。
二つ目は、FTPサーバとして利用可能なのかどうかということです。より具体的に
言えば、職場などのコンピュータに AN HTTP Server によるホームページを構築した
として、その内容を、自宅などから更新できるのでしょうか。
以上、ご教示をよろしくお願いいたします。
すみません、ヤット出てくれました。
minibbsの件解決しました。
このときのアイコンが次のように変わっていました。
ホスト名=fukushima2-32.m.nttpc.ne.jp
アドレス=210.139.2.234
(どこに記載するものなのでしょう)
text/plain ですが、これまたすみません。
見つけましたが、いっこうに効目がありません。
なんかタイムリーじゃない、どうぞ笑ってやってください。
中田さん、確認して頂きありがとうございます。
1200ファイルくらい大丈夫と言う事だったので、こちらでも再確認し色々テストを
してみました。こちらの環境では493ファイルまでしか表示出来ないようです。
ちなみに、こちらで調べたところ、どうもファイル名称の文字数に関係している
ようです。こちらでは拡張子を含めて1ファイル41バイトのファイル名の時(固定)
493個のファイルまでしか表示出来ないようです。
実は、メインフレームの処理結果をブラウザで表示する為に、サーバにFTP転送し
その際にジョブが特定できるようにファイル名にジョブの情報を付加させているので
ファイル名称が41バイトと長くなってしまいました。
こちらでの表示内容は以下の通りです。
Index of /LogWork
.. Parent Directory
ICS1_CO71SEL1_D19981009_J0269_T114004.TXT 12 kB 1998/10/09 11:53:26
ICS1_CO72@PAF_D19981009_J0753_T180738.TXT 250 kB 1998/10/09 18:10:20
ICS1_CO72B740_D19981009_J0993_T203742.TXT 77 kB 1998/10/09 20:50:00
・
・ 途中省略
・
ICS1_QO8AA010_D19981009_J1042_T210651.TXT 40 kB 1998/10/09 21:10:08
ICS1_WO72BK0A_D19981009_J0150_T094013.TXT 29 kB 1998/10/09 10:02:18
ICS1_WO72BK0B_D19981009_J0151_T095950.TXT 35 kB 1998/10/09 10:33:00
... too many files.
AnWeb/1.03
以上、よろしくお願いします。
何時も恥ずかしくて質問にしのびません。
次の事が見つかりません。
(注意)以下のテストで、ファイルのダウンロードになってしまう場合は、エクスプローラのファイルタイプの設定で、MS-DOSバッチファイルのMIMEタイプを text/plain にしてください。
お世話になります。
先日、あるパターンで確実に AnHTTPdの動作が不定になる事を発見しました。
OS:NTserver4.0SP3
単体のhtmlファイル中に <!-- #execの行を2行連続して別々に perlを起動
すると AnHTTPdのタスクシェアタイムが最大になり手が付けられなくなります。
当方ではこのパターンで起こりますが、、、みなさんいかがでしょうか?
fin
t.kobayashi さん、
確認しました。kobayashiさんの設定はおかしくありません。
単純に、認証すべきパスが URLのパスに含まれているかどうかの判定をしているので、そうなってしまうようです。
これは早速直します。
山崎さん、
簡単に確認しましたが、大丈夫なように思います。
(C:\windows\system の 1200ファイルくらいで確認)
... too many files と出るのでしょうか? それとも別のエラーですか?
ももさん、
どうもありがとうございます。
データファイルの書き込みをおこなうのはそのスクリプトのはずです。
つまり、書き込みをおこなうようなスクリプトなら書き込みをおこないます(あたりまえか。。。)。
フォームとスクリプトは自作でしょうか?
1.02 -> 1.03 の変更点については、ホームページの What's New のところをご確認下さい。
内容がわかりにくいかもしれませんが、ログの更新機能の追加と SSI 関連のバグフィックスです。
おおよそこのコメント集で出てきた話なので、ここを少しさかのぼってご覧になるとわかりよいかもしれません。
TigerCat さん、
日本語Windows を検出したらデフォルト言語を日本語にする、とするつもりでいます。
今もそれによってオプションダイアログのフォントを使い分けています。 '\'マークがバックスラッシュでは(日本では)わかりにくいでしょうから。
表示言語が英語でも日本語Windows上では日本語フォントを使っている、という意味です。
index-e.html が置いてあって、英語圏や仏語圏からもたまに問い合わせはあるので、そのあたりは一応考慮しています。
さくらさん、
どうもありがとうございます。
とりあえず外部プロクシを使いたいと思う状況でないとすれば設定不要です。外部プロクシは AN HTTPD をプロクシサーバとして使う場合の話ですし。
説明書きが不足しているのは永遠の課題です。少しずつ改善するつもりですので、今しばらくご容赦を。
いろいろ試してみて、疑問の点はおたずね下さい。
やま(yama, 超河馬のやま)さんへ、
落ち着いてやりましょう。
Error 500 の方は、
perl.exe のフルパスが b:\perl\bin\perl.exe なら、
(1)parse #! line をチェックしていたらチェックをはずし
(2)ExecProg for .pl, .cgi に b:\perl\bin\perl.exe と入れる
ただし、上のは Perl を b:\perl にインストールした場合の話ですから、そうではない場合はそれなりに変えなければなりません。
よくわからなければ、Perl をどこにインストールしたかを言って下さい。
Error 404 の方は、
DocumentRootなどの設定の問題です。パスといってもいろいろなので、次の質問にお答えを。
(1)DocumentRoot は b:\httpd でしょうか?
(2)このエラーが出た時に指定した URL
(3)実際に minibbs.cgi がどこにあるか
答えの例:たとえば、
(1)DocumentRoot は b:\httpd
(2)http://127.0.0.1/httpd-docs/minibbs.cgi
(3)b:\httpd\httpd-docs\minibbs.cgi
という具合に答えてくださいね。
聞いている意味が不明でしたら、どこが不明か言ってください。
こんにちは。
AN HTTPDを使わせていただいてます。
ちょっと疑問に思ったことがあったので、報告しておきます。
ユーザ認証のところです。
/hoge
にアクセス制限をかけるとして、
http://www.hogehoge.or.hoge/hoge/
なら、うまく認証の入力画面がでるのですが、
http://www.hogehoge.or.hoge//hoge/
とやってしまうと、
認証を素通りしてしまいます。
これは、私の設定がおかしいのかどうなのか、
確認お願いできますでしょうか?
中田さん、こんにちは。いつもお世話になっています。
以前変更して頂いたインデックスリスト表示数の上限ですが、久しぶりに
バージョンアップ(0.9betafから1.03)を行ったところ以前の
上限に戻っているようです。
申し訳ありませんが、確認をお願いできないでしょうか?
はじめまして。ももと申します。
CGI本の購入を契機にjperlとAn HTTPd を導入してどうにかスクリプトの動作テストも
できました。私のプロバイダはtelnet不可ですので、このようなフリーウェアがあるとは
誠に感謝感謝です。
早速ですが、許されるならどなたかレス願います。
送信フォームからスクリプトに書き込みデータを送った時にデータファイルへの
書き込みも行われるのでしょうか。
応答待ちの状態のままです。
versionは1.02です。1.03との違いも教えて頂けませんか。
To)中田様
ANhttpdのインストール後デフォルト言語は日本語になるのですか?
おそらく日本中全ユーザの望むところだとは思いますが・・・
私はデフォルトはやはり英語にしておくべきだと思います。
世界中には非常に便利なソフトがありますよね、たとえば、フランス人の作った優秀なソフトが
あったとして、起動したらフランス語だらけでさっぱりわからない?!ひとまず
英語に設定変更しようにも、そこまで行き着けない、なんて事があります。
この逆もあるかと。
世界中の人がANhttpdに興味をもちインストールしてみたところ、画面がバケ文字だらけ
(日本語を使う場合、他国のOSでは通常表示できません)であったら・・・
使う、使わないの前に、非常に「問題」のような気がしちゃうんです。(^^;
ちゃんとしたインストーラ作って、インストール時に英語か日本語か聞いてくるとか、
インストール直後の起動時に英語か日本語か聞いてくる、なんてほうがいいと
思います。
to) omiさん
hostsのlocalhostの記述を改変して、別のホストに割り当ててしまうのは、おすすめできません。
大変イリーガルな方法だからです。
localhostというのはあくまでも自分のマシンのことですので、下手にいじるとシステムが
ちゃんと動作できなくなると思います。
何かネットワークの設定がおかしくて、プロバイダとの通信に支障があるようなら、その原因を
究明するべきかと思います。
また、プロバイダへのアクセス時に不正がおきる原因といいますと、ネットワークのプロパティで
TCPのDNS設定が有効になっていて、しかもDNSサーバの指定が自分になっていると、
ことごとく接続不正になるかと思います。
ルーティングについても同様で、ダイヤルアップのプロパティで、接続先のデフォルトルータの
設定を反映しなければなりません。
この状態で、インターネットへの接続がまずちゃんといきそうですので、逆に自分のローカル
環境でWebサーバを立ち上げたら、アドレスは当然localhost(127.0.0.1)もしくは、ダイヤルアップ
によってプロバイダより割り当てられたIPアドレスとなります。
ところが、勝手に「私はwww.myhost.or.jpという名前にしよう」と思っても、それはできません。
自分の環境だけでも、www.myhost.or.jpでアクセスできるようにしたければ、
自宅でDNSサーバを立ち上げるか、hostsの記述を
127.0.0.1 www.myhost.or.jp localhost
というふうに「別名」で記述するべきだと思います。
やっと、クライアント側の再インストールがある程度終わって戻ってきました。
丁度、v1.03もアップされて良いタイミングでした。
>yamaさん
たぶん、GeneralプロパティのGeneralタブにあるPerlのパス指定が間違っているのでしょ
う。
普通にインストールすると、Perl.exeは「B:\Perl\bin\Perl.exe」に入ると思います。
>超河馬のやまさん
パスの表示が変ですよね。
たぶん、http://127.0.0.1/cgi-bin/minibbs.cgiのように指定したとき、minibbs.cgi
は[DOCUMENT-ROOT]\cgi-binに置く筈ですが。
GeneralプロパティのGeneralタブのcgi-binのパス関係を変更してないなら、上記のよう
になっているか確認してみてはどうでしょうか。
いずれも、中田さんから回答はあると思いますが、ついででしたので。(^^ゞ
たしかに、日本語表示できました。どうもお騒がせしました。
外部プロクシをつかうとどうなるのですか?
この設定を変えると、どうなるか?と言うような説明がマニュアルに欲しいなと思いました。
それにしても、すばらしいソフトウェアです。これは。
内容と言い、完成度と言い・・・
しばらく、いろいろ試してみようかと思います。
これもパスがよくないのですね。
Error 404
Not found - can't find cgi script or executable b:\httpd\httpd-docs\127.0.0.1\httpd-docs\minibbbs.cgi
次の様なエラーを前にも読んだような気がしますが、も一度願います。
Error 500
CGI Error - can't exec "b:\perl\Perl.exe b:\httpd\cgibook.zip\BBS.CGI ", errorcode = 2, No such file or directory
さくらさん、
日本語オプションはありますが、デフォルトはまだ英語です。
Options/General, Appearance/Index で Japanese を選んでください。
そろそろデフォルトを切り替えようと思ってはいますが。
GUI は日本語じゃないのですか?
インターネット上のHTTPサーバ調査をやっているThe NetCraft Web Server Survey で、10月1日のレポート では AN HTTPD (AnWeb) が 40サイトありました。
外向けにも稼動しているということですね。
もっともトータルは 3,358,969サイトで、Apache が 1,756,917、Microsoft-IIS が 760,395 です。
ぴゅあさん、
Aに AN HTTPD においた場合、AまたはBからダイヤルアップのIPアドレス指定ならLAN内で処理されるのでいいのだと思います。
きくちゃんのは(もともとLANとは関係なく)外部からのアクセスでフリーズするという話だったと思いました。
テストは外部のホストに入ってそこから AN HTTPD にアクセスしないといけないのかもしれません。
ダイヤルアップネットワークの動作が関係した問題かと思いましたけど、原因がわからないので思いつく範囲で書きました。
950a ということなので kernel32.dll も関係するかな、と。
IE3.02だとPOSTでメモリリークという話はありました。
もっともこれはサーバが Pragma: no-cache を出せばいいようですけど。
きくちゃんの場合は HTMLでということなので CGI は関係なさそうですが。
あ、IEでしたね。
v3.02しか入れてありませんが、時間を作って、IEでも確認してみようと思います。
IE v4.01は重いので申し訳ありませんが省略させて頂くことにします。もし、更に時間が
出来ればもう一つのWin95(OSR2.1)の方に入れてテストしてみようかとも思いますが、Win95
を再インストールすることになるため(IE v4.01を消すため)、行うかどうかは未定ですが、
ご了承ください。
>中田さん
余計かもしれませんが、Aからダイヤルアップで接続する場合は、An HTTPdをBに入れてい
ないといけないのだと思います。
これは理論的でなく、実際のテストで判明した?のですが、AにAn HTTPdを入れた場合は、
ダイヤルアップIPアドレスを指定しているにも関わらず、外に出ないでLAN上で処理されてし
まっているようでした。WinNT4.0 Server−Win95(OSR2.1)の環境であるためなのか(Win95
−Win95環境では違うのかもしれませんし、WinGateを通していることが何か関係あるのかも
しれません。また、ブルータは使っていないので、ブルータを使ってLAN環境を構築して
いる場合は、また違うのかもしれません)、ブラウザのキャッシュの利き方かも知れませんが。
今は、4.00.950(a)をやめて、4.00.950B(OSR2.1)に統一したので、KERNEL32.DLLは関係
なくなりましたが、TCP/IPはアップデートしたと思います(たぶん、OSRに関係するアップデート
はすべて)。
あと、Win95としては違いはないということになっていますが、内部的にはDOS/VとPC98で
は微妙に違うのではないかという気もしないでもありません(細かな部分で。ただ、ハードに
絡む部分だけでしょうが)。私はDOS/V機で確認しました。
的外れかも知れませんが、一応。
それと、仮想メモリは最小128MBにしてあります。私の環境としては、ちょっと大きすぎま
すが(メモリは32MBしか積めないマシン)。
この設定は知らない人もいるのかも知れませんが、システムのプロパティのパフォーマンス
タブで、仮想メモリボタンを押して、自分で設定するを選んだ後に最小仮想メモリサイズ
を入力します。警告が出ますが無視して構いません。こうすると、ここに指定したディスク
領域が常に連続で取られている状態になります。ただ、仮想メモリ領域の確保が行われ難く
なってパフォーマンスが向上するだけのことで、アプリケーションの異常動作を解決できる
ものでもないような気もしますが。仮想メモリのことを書かれていたので一応。
因みにデフラグでは本当の効果は出ないようです。Norton Utilitiesで最適化した方が
良いようです。
ただ、質問していたのは、それよりも残された空きディスク容量ですよね。
一応、参考になるのかどうかは判りませんが、異常が確認できなかった私の環境(今は
アップグレードしてあるのでテスト当時のもの)を挙げておきます。
WinNT4.0 Server→Win95,Win95→WinNT4.0 Server両方向に付いて確認してあります
(Win95,WinNT4.0共に正常に動作することを確認するため)。
WinNT4.0 Server側
COMPAQ ProLinea 4/25s
CPU : 486SX/25MHz
MEM : 24MB
仮想メモリ : 64-128MB
ブラウザ : Netscape Communicator v4.5PR1日本語版(v4.5PR2英語版ではなかった
と思う)
テスト当時、CPUパワー,メモリがなかったため、極力スワップの起こらない最小限の
アプリケーションのインストールに抑えていました(An HTTPd,Perl,ISAPI導入/全て最新
バージョン)。
Win95(OSR2.1)側
COMPAQ ProLinea 4/25s
CPU : AMD 5x86/133MHz(33MHzにクロックアップ。4倍速)
MEM : 24MB
仮想メモリ : 128-max(1GB程度)
ブラウザ : Netscape Communicator v4.06日本語版
An HTTPd,Perl,ISAPI導入/全て最新バージョン
一般的な環境と同等の多くのアプリケーションが入っています。
LAN環境
ピア・ツー・ピア
WinNT4.0 Server側:ISDN
Win95側:アナログモデム
WinNT4.0 Server側にプロキシ/ファイアウォールサーバとしてWinGate2.1を使用
(これは、WinNT4.0 Serverで受け取った(Win95側のAn HTTPdを起動)ときにWin95側
のブラウザで見たときにしか機能していない筈です。Win95[An HTTPd]→アナログモデム
→[インタネ]→DSU→WinNT4.0 Server[WinGate]→[LAN]→Win95[ブラウザ]という見方
をしたとき)。
多少でも参考になれば幸いです。
きくちゃん、
A,BをLANでローカルIPで接続し、Aからダイヤルアップで接続、の場合ですよね?
AN HTTPD は Aにあって、ダイヤルアップ時に割り当てられたIPアドレス(かホスト名)でアクセスした場合にフリーズする、と理解しましたが。
Win95 で 950a, HTMLに数回アクセス後フリーズ、IEも動作せず、ネットワーク機能も使えなくなる という症状でしたね。
Microsoft(R) Windows(R) 95 最新モジュールでアップデートモジュールの、Kernel32.dll のアップデートとついでに TCP/IPモジュールのアップデートをしてみるのはどうかな、とは思います。
あと、メモリ量と仮想メモリのドライブの空き容量はまだ聞いていないような気がします。
まだ原因はちょっとわかりませんが。。
>きくちゃん
念のため....
「仕事用PCは、接続していません」というのは、LAN上にはないということでしょうか。
そのマシンではインタネに繋げていないとしても、LAN内にインタネに繋げているものがあれ
ば、LAN内全てのマシンが繋がっていることになりますので、念のため。
ただ....
これが本当に対象になるのは、IPアドレスを取得している場合でしょうが。
ローカルなIPアドレスには外部からアクセスできない筈です。(たぶん)
私も、まだ、そこまで詳しくはないもので。
知識の一つとして持っておくのは無駄ではないでしょう。
きっと、何時か、何処かで....
ぴゅあさん、ご意見ありがとうございます。
でもインタネ上では、セキュリティに関して私は?です。
ですから仕事用PCは、接続していませんので、「かまわないかな」なんて思っています。
でも、この際だから無いよりは有ったほう良いですから、設定します。
中田さん、ごめんなさい。
掲示板に重複投稿してしまいました。
でも、ブラウザにエラー表示ばかり出ていたので、投稿ボタンを何回か押した結果です。
スミマセン!
>きくちゃん
いちお、補足?しておきます。
インタネ上に出るのなら、LANはNetBEUIで接続しましょう。
そして、TCP/IP側は、ネットワーククライアント,ネットワーク共有サービスのバインドを
無効にします。
中田さん、こんばんわ
先日問い合わせしましたフリーズの件ですが、中古パソコンを1台調達し、
LANで接続しTESTしてみました。
LANでは、問題なく動作しましたが、やはり、外部からアクセスすると、フリーズします。
また、ネットワークの共有サービスも設定しましたが、フリーズ後は、アクセスが出来ませんでした。
Win95のバージョンはWin95aの物を使っています。
よろしく、お願いします。
omi さん、
その設定だとそうなるでしょう。
ダイヤルアップでつないだ時に www3.airnet.ne.jp でどちらにアクセスしたいのでしょうか?
その時によってどちらにも、というわけにはいきません。
Windows の場合、DNSよりhostsファイルを優先するようですから、おっしゃるように hosts を設定してしまったら、www3.airnet.ne.jp は 常にIPアドレス 127.0.0.1 と解釈されます。
それを避けるには、そのつど hosts の www3.airnet.ne.jp の行を消す必要があります。
キャッシュはもちろん localhost と www3.airnet.ne.jp を区別しますから、これはなんとも。
もともと、http://www3.airnet.ne.jp/ でローカルホストにアクセスしたい、という理由は何でしょうか?
minibbs などの CGI で URL指定があるから、ということなら、
スクリプト中の
'http://www3.airnet.ne.jp/aaaa/index.html'
などのところを
'/aaaa/index.html'
とすれば済むのですが。。。。
かすいさん、
了解しました。ソートや入替えを考えます。
KOBA さん、
#! の行が PerlIS.dll なら PerlIS を使う、ということですね。
それはできると思います。
日本語については不評なところは変えます。
もっとも、日本人が作っていて日本語化というのも考えてみると変な話ですね。
リンクするの忘れました。
http://elvis.mm.t.u-tokyo.ac.jp/kaiyouken/
だるまさんへ。僕の作ってるウェブページは、大学のサークル(スキューバダイビング)
のもので、
http://elvis.mm.t.u-tokyo.ac.jp/kaiyouken/
にあります。主としてCGIを使ったページは5つくらいあります。その他のページでも細
かく使ってたりします。
はじめてCGIを作った(おみくじみたいなの)のはホームページ作り始めて1ヶ月後で、
多少大きなCGIを使った(Web裏技のminibbs)はその2週間後、チャットを自分で作った
のはさらにその4ヶ月後だったみたいです。
暇な学生なので参考にならないかもしれませんが、一度自分で作り始めてしまうとす
ぐに僕が作った程度のものは作れるようになります。あとはネタさがしですかね。
問題になっていた、
http://www3.airnet.ne.jp/aaaaa/index.html をアドレスするとブラウザが、
”次のサーバの場所を見つけられません:www3.airnet.ne.jp” と拒みます。
が、以下の方法で解決しました。報告します。
C:\WINDOWS\hosts.sam を hosts にリネームして、
内容の
127.0.0.1 localhost を
127.0.0.1 www3.airnet.ne.jp に
書き換えます。
新たな問題は、
hosts を読むタイミング、
キャッシュ済みか 否か、
AN HTTP Server か プロバイダのサーバか
に因って、サーバの場所を見つけられないエラーが出ることです。
あ、すいません、左右逆でしたね。(^^;;
root:/
test:/test
それから、ソートは、なにも階層数を数えなくても、単に逆順ソートで
いけますよね。(^^;;
中田さん、みなさん、こんにちわ。
えっと、要望になると思うのですが……。
アクセス制御をかけるときは、認証名とパスのリストを追加して
いきますよね。
そこで、
/ root
/test test
とあったとすると、これはソートされないので(ソートされても
この場合は、こうなりますが)、上のものを優先的に要求してくる
わけですが、最初っからルートだと、どの階層においても、rootを
問い合わせてきます。(^^;;
これは、rootを削除して、登録し直す事によって、順番を変え
られますが……いっぱい登録してると、変更するのは、ちょっと
面倒です。(^^;;
だから、このリストの順位変換が可能ならと思うわけです。
# あ、これを書いてる、今、気づきましたが、レジストリを
いじれば、なんとかできますね。(^^;;
順位変換でなくても、自動ソートでも良いのですが……ルートに
近いほど下に来るような。<文字数だけで判断するとダメそうだから、
ちゃんと階層数を数えて処理しないとでしょうけど(^^;;
新たな書籍情報です。
今日、久々に秋葉に行きました。サーバのアップグレードがやっと出来るようになって、
CPUとメモリを調達してきたのですが。
そのついでにちょっとだけ散策してきました。
普段、Winプログラミングに挑戦中なので、以前、「Windows95 APIパワフルテクニック大
全集」インプレスという本を買っていたのですが、そのシリーズにCGI関係のものが出ていま
した。
「パワフルテクニック大全集」のシリーズもので、PerlのものとCGIのものがありました。
内容的には、トピックごとにワンポイントのテクニックが書いてあります。ひとつひとつ
が小さなプログラムになっており、試すことが出来ます(CD-ROM付き)。
実際に見たのはPerlのものだけでしたが、Web関連のものもかなり書かれているので参考に
なるのではないでしょうか。3〜4cmくらいの厚さがあるもので、読み応えはあるものと
思います。見掛けたら、是非立ち読みでもしてみてください。1冊大体5000円くらいするで
しょう。これなら理解できそうだと思ってから買うのが良いですね。
>だるま まさひろさん
やきりそうでしたか(^_^;)。
中田さんにもお話ししてあるのですが、現在、修復が終わったばかりで(CGI関係はまだ復
元できていない)、あまり見て頂くには心苦しいものがある状態です(^_^;)。
現在、掲示板の作成と格闘しているため、これが終わってから、リニューアルして行く予定
で、更新は止まっています。また、更新が始まった際には、An HTTPdも取り上げる予定でいま
す。ここで書いた、インターネット上でのHTML文書を書く上での心構え?みたいなことは自分
なりの考え方を書いていたりしますが。
と言う訳で、中田さんにも、An HTTPdのページを作り始めたらお知らせしますということで
伝えてありまして、これが、リンクに反映されるほど、出来の良いものに仕上がるかどうかは
おはずかしながら何とも言えませんが(何しろ、ここで書いているようにいつも長文になって
しまいますので(^^ゞ リニューアルに伴い、全面的に整理し直すつもりではいますが)、見
せても恥ずかしくない?レベルになればということでお許しくださいませ(^_^;)。
日本語対応は素晴らしいです。今まで速すぎて全く読みとれないと思っていた
タイトルバーの表示まで見える様になりました。
でも、
"インデックスリスト"とでかいカタカナで表示されるのはちょっとショックでした..(^^;
ところで、
最近、キャッシュされているページのアドレスをキャッシュ用のディレクトリから検索して
一覧表示するCGIを作っているのですが、PerlISが使えなくなるのが痛いと思っています。
.PL .CGIをPerlISで実行の設定を変えずに #!の行を調べる等の設定で使い分けることが
出来ないでしょうか?
logファイルからアドレスを抽出すれば良いのかもしれませんが、キャッシュの中身を
ノートにコピーしてたりするので...
> > ところで、ぴゅあさんやわたなべさん、タイガーさんのHPのURLはどこに出ていますか?
> とは??
とはですね、もし皆さんが御自分のホームページを開いてらっしゃるなら、
行き先を教えて頂きたいな、ということでしたm(__)m
リンクに出てないようなので。
なかたさん、今後もHTTPDとともにローカルでテストしながら、CGI勉強していきます。
今後も宜しく御願します。
omi さん
自分で書いていてこういうのもなんですが、確かにそこの記述はわかりにくいですね。
絵の方を日本語に差し替える時に、書き直したいと思います。
内容の方はぴゅあさんの説明で理解していただけたようですが、
ディレクトリのエイリアスは、それを設定してあるホスト(xxx.xxx.xxx.xxx)上でのみ有効です。
www3.airnet.ne.jp では、またそれなりのエイリアスを設定しているということになります。
渡辺さん、
なるほど。そのあたりは HTMLというより HTTP, URL の話ですね。
HTTP/1.1 と URI の最新のRFCでは、チルダは unsafe からは既にはずれているようです。
ぴゅあさん、TigerCat さん、
そうですね。
だるまさんも頑張ってください。
では私も AN HTTPD のバージョンアップに励むことにします。
ぴゅあ さん ありがとうございます。_(._.)_
未だ、LAN環境を構築していません。(ノートが欲しい)
options.html の中に、以下の記述がありました。
--------------------------
ディレクトリのエイリアス(Alias)の設定
Virtual Path: 仮想パス。
Local Path: ローカルパス。
http://xxx.xxx.xxx.xxx/仮想パス と、ローカルパスの対応付け(別名、Alias)をします。
(画像の中に)、Virtual Path v /cgi-bin D:\myHttpd\cgi-bin
この例では、たとえば、 http://xxx.xxx.xxx.xxx/cgi-bin は、D:\myHttpd\cgi-bin を指します。
--------------------------
そこで、
Virtual Path v /aaaaa D:\HOMEPAGE\AAAAA とすれば、
http://www3.airnet.ne.jp/aaaaa は D:\HOMEPAGE\AAAAA を指す、と考えた訳です。
すなわち、
www3.airnet.ne.jp の部分は 何でもかんでも
127.0.0.1 に置き換えてくれるんだ。 と。
ちょっと甘かったようですね。(~_~;)
洞察力をナチュラルにして考えてみると・・・
プロバイダがCGIを一般ピープルに開放している、ということは、インターネット環境を
時としてアマチュア以下のいわゆる「初心者」へ開放しているということです。
皆様がおっしゃいますよう、UNIX環境や、インターネット環境というものは不特定多数
が利用するうえで大変複雑で、些細な事が迷惑になったり、思わぬ事故になったり、
当然、人間的には一番重要視する分野であると思います。
ところが、プロバイダが安易にこれらの世界をユーザに見せると、余計に混沌とした
世界を作ってしまうのです。
方向としては大変歓迎すべきです。お茶の間からインターネットへアクセスできて、
全世界へ情報発信ができ、独自のプログラムでインターネットの付加価値を模索できる
んです。まさにInternetExplorer(爆)。
きっと誰もがカルチャーショックでしょう。なぜなら、はじめからインターネットや
UNIXやプログラミングの原理を理解してる人が圧倒的に少ないというか、そういった
人にこういう世界への窓口の役割を果たすのがプロバイダだからです。
ユーザは恵まれた環境で、少しづつ理解をしていくものだと思います。それがぴゅあ
さんや、ここの掲示板でなぜかCGIの質問をしてしまう(私もです(^^;)人たちのような
積極的に安全と効率を追求したい、とか、インターネットでの付加価値を模索するような
アカデミックな環境となり、スキルを上達させ、知識と経験を豊かにしていくのです。
結局はインターネット道場なわけで、誰もが技術を鍛えている最中といえます。
道場たるもの、環境や規律がしっかりしていなければ育つものも育たない、と私は
昨日、そう考えてみたのです。(^^;
サーバが重いプロバイダなら、やめて別へいきましょうよ〜。少なくとも私がプロバイダ
でシステム構築するときは、ユーザが万一サーバを落としちゃっても、実は他にもう1台
サーバが動いてて全く問題ナシ、とか、どれだけガリガリディスクをアクセスされようとも
ディスクアレー装置のストライピングにより、屁でもないようなシステムと、それを
支える分散ネットワーク、などなど、考え出したらキリもなく、ユーザを快適にしたり、
わざわざ初心ユーザを脅かさないで済むような技術はいくらでもあるんです。
で、プロバイダにはがんばっていただきたいと、昨日述べたわけなんですよね〜。
ユーザが誤ってサーバを落としたら、それはサーバの管理がずさんか、並列マシンをケチ
ったか、そういうふうに管理サイドが謙虚に受け止めるべきです。「責任とれ」だなんて、
お門違い。いいかげんな環境を提供してユーザを責めるのは、システム設計者失格なのです。
我々は、裏で仕事をしてて、万人がインターネットを体験できる時代があっという間に到来
して、本当にすばらしい事だと思っています。だからこそまじめに仕事して、ちゃんとした
道場(サーバ環境)を整えていかねば、と思っています。
だんだんネットワークが家庭へ受け入れられるようになってきてるんです。中途半端な
技術でユーザを失望させたり、敬遠させたりするのは、辛いんですよねぇ〜。
何が言いたかったかよくわかりませんが、みんなでがんばりましょう。(謎)
>omiさん
それは、まず、LAN環境を構築しているかどうかによっても変わってきます。
LAN環境を構築していなければ、http://127.0.0.1/....で正解です。確か、解説が出てい
ますよね。
LAN環境を構築しているなら、TCP/IPに自分のパソコンのIPアドレス192.168.0.1などが設
定されている筈です。正しくはIPアドレスはAn HTTPdサーバがインストールされている
マシンのIPアドレスとなりますが、そのマシンのIPアドレスが192.168.0.1であれば、
http://192.168.0.1/....という指定の仕方になります。
http://www3.airnet.ne.jp/...はインターネット上に存在すべきURLの筈です(DNSサーバ
を立ち上げていなければ。ただ、この指定の仕方は今一つうまく設定できていません)。
簡単ですが、この説明で解りますでしょうか。
Virtual Path が /isapi D:\HOMEPAGE\public_html なら
http://127.0.0.1/isapi/index.html をアドレスすると
D:\HOMEPAGE\public_html\index.html が開く
というのが正しいということになります。
また、オプション設定は、
DocumentRoot: D:\HOMEPAGE
Virtual Path v /aaaaa D:\HOMEPAGE\public_html
が正しいと思いますが。
少し、ちゃんと整理しておきます(v1.02のGeneralダイアログ/Generalタブより)。
DocumentRootを[D:\HOMEPAGE]
v [/aaaaa] -> DocRoot\ [public_html]
と設定したとします。
このとき、Aliasesタブを開くと(OKボタンを押して開き直さないと反映されていません)
v / D:\HOMEPAGE
v /aaaaa D:\HOMEPAGE\public_html
となっている筈です。
ここで、LAN環境を構築していないと仮定すると、
http://127.0.0.1/ のアクセスが、D:\HOMEPAGEを差し、
http://127.0.0.1/aaaaa/ のアクセスが、D:\HOMEPAGE\public_htmlを指すことになります。
これを見比べると判ると思いますが、127.0.0.1/の部分が、aliasesの/に相当していること
が確認できると思います。また、aaaaaという指定は、public_htmlに置き換えられていると考
えられます。
余談ですが、これより、127.0.0.1/の指定は必須ですので、必ず、D:\HOMEPAGE下がアクセス
されることになり、D:\及び、同階層のディレクトリ(Winですからフォルダが正しいですね)
には絶対にアクセスできないことを表しています(ドキュメント外へのアクセスの禁止:保護)。
また、http://127.0.0.1/aaaaa/の指定により、まず、127.0.0.1/の部分で、D:\HOMEPAGE
であることが決まり、aaaaa/はpublic_htmlに別名(alias)となっているということから、
D:\HOMEPAGE\public_html下がアクセスされることになります(aaaaaはpublic_htmlに読み
替えられる)。
こんな説明でどうでしょうか。
はじめまして、バグ取りに重宝しています。ありがとうございます。<m(__)m>
掲示板を完成させたくて使わせて頂いていますが、パスの問題が発生しました。
http://www3.airnet.ne.jp/aaaaa/index.html をアドレスするとブラウザが、
”次のサーバの場所を見つけられません:www3.airnet.ne.jp” と拒みます。
http://127.0.0.1/aaaaa/index.html をアドレスすると 正常です。
解決方法を、どなたか、お教え頂けませんか?。以下は設定です。
C:\WINDOWS\hosts の内容は 127.0.0.1 localhost です。
ローカルファイルの場所は、D:\HOMEPAGE\AAAAA\index.html です。
オプション設定は、
DocumentRoot: D:\HOMEPAGE\AAAAA
Virtual Path v /aaaaa D:\HOMEPAGE\AAAAA
勘違いをしているかもしれませんね、
Virtual Path が /isapi D:\HOMEPAGE\BBBBB なら
http://www.microsoft.com/isapi/index.html をアドレスすると
D:\HOMEPAGE\BBBBB\index.html が開くと思っています。
An HTTPdとは直接には関係しない?し、ちょっと長々と書き過ぎてしまったので控えていま
したが。
私の加入しているプロバイダ(3WEB)のCGIサーバは閉口状態と言えるほど重く、テレホ
突入時は殆ど動きません。一応、新設されたサーバに移転させてもらって、今のところたま
にしかエラーは出ませんが。
だるま まさひろさんが更に挙げていますし、以前書いたループを作ってしまう等に付いて
充分に伝わっていなかったようなので、加筆させて頂いておきます(短めに(^^ゞ)。
通常の(ローカルな/イントラネット)UNIX環境ではちゃんと分散されますし、それほど気
にすることはないと思いますが、インターネット環境は1つのサーバを多くのユーザが共
有しあって利用する環境なので、極力無駄な処理やループの発生しないように気を配って
プログラミングすることは重要なことだと思います(回線上を流すデータも同様のことが言えると
思いますが、これは表現を豊かにしたいというのは当然のことなので、「必要以上に」という
点を気持ちとして持っておけば、それでも良いのだと思います)。そして、それはユーザの
責任というか、取るべき姿勢でもあると思います。
また、無駄な処理などを極力取り除いたプログラムを作ることを常に頭に置いてプログラミング
すること、それを考えることが自作CGIの醍醐味でもあると思います。そうでなければ、
レンタル掲示板やフリー/シェアのCGIを使ったので充分でしょう。自作CGIの勉強をする必要
はないものとも思います。
私の書き掛けの解説でも多少書いてはいるのですが、プロバイダにサーバが重いと苦情を
言う前に、自分達の作っているHTML文書やCGIプログラムを見直してみる必要もあるのではな
いでしょうか。と、偉そうなことを言えるほどのことをやっている訳ではありませんが、常に
考えているつもりではあります。そして、それがインターネット上のプログラマとしての勉強
していくべき方向であると思います。
私の加入しているプロバイダでは、サーバの重さの回避策として、CGIの実行制限が加え
られました。これはCGIを使う人にとって圧迫でしかないのですが、そういう形でしか対応で
きないプロバイダが多いのも確かではないのかと思います。現在では、年間利用料も値上げ
されて、もっと快適なプロバイダの倍近い利用料になってしまいました(サーバの性能向
上の筈であった)が、結果としては値上げという形でしか現れていません(改善できていな
い)。
そうであれば、ユーザ側で対処策を練るしかないと思います。プロバイダに責任を押し
付けることは簡単なことですが、ユーザ側が考えることも必要であり、それがプログラミング
を行うということでもあると思います(セキュリティ等の問題を含めて)。
また、私のプロバイダでは、同じサーバに居る他の人が見えてしまいます。rmコマンド
等は使える筈ですので、間違えて他のユーザに迷惑を掛けてしまうことは(希なケースで
しょうが)ないとは言えないのだと思います。何でも良いからどんどん動かしてみれば良い
というのではなく、それを考えるのが勉強であると思います。そして、最初はそれに恐れを
感じることは当然のことだと思いますし、それを忘れたとき、プログラマではなくなってい
ると思いますが、どうでしょうか。
>だるま まさひろさん
理系でないからとか等は関係ないと思います。CGIに取り組んでみようと思ったということ
は素晴らしいことだと思います。未知のものに取り組んでみようと思うということは、ただ
それなりに使って遊んでいる人とは雲泥の差だと思います。ガンバって勉強していってくださ
い。
> ところで、ぴゅあさんやわたなべさん、タイガーさんのHPのURLはどこに出ていますか?
とは??
短くまとめるつもりが、どうしても長くなってしまいました。困ったものです。マトモな文
章になっているなら、まだマシなのでしょうが、どうも苦手ですね。
ごめんなさい。
UNIXでは、オープンシステムという考え方が既に定着しています。
プログラムの仕様や技術、手続きや規格が公開されてるものがほとんどです。
ユーザにとって、プロ/アマ、商用/フリー関係なしに、情報は公開されています。
開発者は、与えられた情報を最大限利用して、可能なことは実質なんでもやって
いいという発想があったりします。倫理的に見てはいけないファイルがあっても、
仕様で「閲覧可能」となっていればいくら利用してもかまわないのです。
こうして開発者は、「こういうことをやりたい、ではどうする?!」という
具体的な開発が行えます。「こんなことできちゃうから、やっちゃえ」な場合も
あります。こうしてUNIXシステムは可用性を高めてきました。
便利なこと、理想的なことをどんどん実現できたわけです。
CGIを開放されたのなら、同様に「やりたいこと」を推し通してでも実現して
いいと思います。命令を発行して、許可されないものはちゃんとエラーで帰って
きます。通った命令は使うべき。あなたのプロバイダは、sendmailが使える?
Cコンパイラも使えちゃう?どんどん使って開発しちゃいましょう。
逆に管理者にとって怖いのは、中田殿もおっしゃるとおり、たとえば有名な
sendmailやqpopperのバグを執拗にコールして、管理者権限を奪うものや、
apacheなどのWEBサーバのバグを執拗にコールしてシステムダウンをくらわす
ものなど。しかし、管理者がいつも最新版に更新する作業を怠らず、その
最新版で起こってしまう問題はもはやどうにもなりません。攻撃されたとしたら
最善を尽くした上での「不可抗力」とでも言うべきでしょうか。
ユーザには常日ごろから貴重なデータはバックアップを取るよう周知徹底する
しかありません。
結局、バグを利用されたとしても、それはそのソフトの「思いがけない機能の
1つ」としてユーザは認識できるのですから、怒っても仕方ないんですよね〜。
開発する立場としては、むずかしーいところです。
あと余談ですが、UNIXだと、ユーザの発行するコマンドについて、優先順位を
低く設定できます。特別に考慮されたプロバイダなど、エージェント機能により
システムがヒマなときと、忙しい時で、reniceかける度合いを調整するところも
あります。忙しい時でも、特権レベルのプロセスは全く問題ないレベルで動作
できるようレベル分けされていますから、全体的パフォーマンスにはあまり
影響しにくいはずです。デーモン的なプロセスは特に、UNIX機のRISCプロセッサ
は得意の予測分岐で軽々こなしちゃいます。確かにじんちょうなデバイスアクセス
はパフォーマンスダウンのもとですが、遅延アクセスなどがしっかりしてるし、
システムプロセスの実行に支障を来すことは結局無いわけです。
・・・確かにI/O系はPCのSCSIカードとかのほうが頭よさそうでうらやましいです。
結局なんだかんだいって、ネックはネットワークの速度なんっすよぉ。
だからプログラムなんて動かしまくってもだいじょうぶ。(^^;
んー、もっと高速回線が各サーバごとに簡単に引けるようになれば・・・
もっともっとすごい快適ネットワーク社会がやってくるのになーーー。
みなさまこんばんは。
system()関数を使ったソースは下記のサイトで紹介されていました。
わたなべさんが紹介してくださったものです。
http://www.st.rim.or.jp/~hirono/cgitips/tips.shtml
サーバ管理者の話のついでですが、私の加入しているプロバイダの掲示板で
いつもつながらないとかおもいとかそういう話題がでています。で、CGIなどを
使ったら負荷がかかってますます重くなるし、どれにサーバが止まったらどう
責任とるんだ、というような書き込みがあるんです。
プロバイダの方では自作CGIは使用できるが、公式サポートや動作保証はない、
という連絡を受けていますが、会員の中には、自作CGIは使用禁止だと思っている
様な人もいて、なんとなく良い雰囲気ではないような気がするんですね。
プロバイダのCGIに対するスタンスがもう少しはっきりして欲しいと思いました。
ちなみに http://www.angel.ne.jp/ がプロバイダのホームです。
私自身はSEでも何でもないただの文学部の学生ですから、訳も分らんのにCGIなんか
するな、と言われると、すんませんでした、というような気持ちになってしまいます。
でも、ここの書き込みには勇気づけられます。タコな質問や駄弁りにとても丁寧に
付き合って下さって、私は嬉しいです!今後もつつがなくこのページが運用されます
ように。
ところで、ぴゅあさんやわたなべさん、タイガーさんのHPのURLはどこに出ていますか?
HTML-Lintの話ですが、(HTML-LintというのはHTMLの文法チェッカです。WWW上でもできます)
チルダは、
「安全でない文字 ~ が含まれています。%7E と書いた方が安全です。 」
となりました。ただし、「ちなみに、~ は、安全でない文字からは外れる方向にあるようです」とコメントされていました。
で、%7F以降の文字コードの話とは全く別の話なんですね。勉強不足。
http://www.vector.co.jp/htmllint/htmllint.html
やまさん、
いや、機種のせいで LOCAL テストができないということはないはずです。
今やろうとしているのは何ですか?
だるまさん、
systemを使ったスクリプトのソースは見ていませんが、ユーザ入力を加工して system に渡しているのでなければまず大丈夫だと思います。
まあ、アブナイと言われている system を使う必要はないケースがほとんどでしょうけど。
自作CGIを許しているプロバイダなら多少サーバがダウンしてもいいのじゃないでしょうか?とまで言ったら無責任か(?)。
昔はサーバがダウンしてどこかのCGIがおかしかったというような話が結構あったように思います。
CGI/SSI のセキュリティについて。私もちょっと。
私は"外部の人がホームページの置いてあるサーバで任意のコマンドを実行できる"ようにするのは結構面倒だと思っています。
hirono さんの例でもそうですよね(?)。
また、TigerCatさんが言われるように、コマンドが実行できたとしても他人に迷惑をかけるようなコマンドはそうは実行できないはずです。
自分のデータを消されることはあるでしょうが。
また、大容量のファイルについては、まあディスク容量の割り当てで上限になるでしょうから、これもそれほどには心配しなくていいのではないかと。
CGIのミスでというよりアダルト画像などの方が問題視されているように思います。
index.html をおいたり 不要なバックアップを消しておくのはその方がいいでしょうね。
ただ、これは中身を見られて穴をみつけられるということだと思いますが、それほどひどい穴は CGI/SSI で見つかるとも思えませんし。
ただし、直接、致命的なことが実行されることはない、という意味でです。
情報収集されて、ちゃんとした(?)クラックの材料にされることはあるでしょうが、それもシステムの方がちゃんとしていれば。
あるいは、本格的クラックには CGI/SSI など不要、といっていいのかもしれません。
別方向の話ですが、
無限ループについて。
これはかならずしもゾンビプロセスというわけではないと思いますが、それはともかく、デーモン類のブロックしてのデータ待ちやシグナル待ちになっている状態と、無限に(たとえば)データアクセスを続ける状態とで CPUへの負荷はずいぶん違うと思います。
CGIから fork() & exec() で作ったプロセスも監視しているのかどうかはちょっと疑問です。
あと、100%サーバ管理者の問題とは言えないと思います。
OSや各種デーモンでバージョンによりセキュリティホールがみつかることがありますが、これなどはサーバの管理者の責任の範囲を越えていると思います。
もちろんそれが明らかになったあと、しかるべきバージョンに入れ換えていなければ管理の問題でしょうが。
でも結論は、TigerCat さんと全く同じで、「ユーザは何も遠慮はいらんぞ」です。
渡辺さん
チルダを %7E に、というのは最近の HTML-Lint でもそうですか?
そういえば、URL中の 空白(スペース)の扱いは MSIE と Netscape で違いますね。
%NN へのエンコードは、そうしなくてはいけない、という話ではなかったと思うのですが。。。。違いましたかね。
"作" は %8D%EC です。
LOCALでテストできなかったりするのは
機種にもよるのでしょうね。
PC9821Vt13を使っています。
TigerCatさんのコメント、大変参考になりました。もっと勉強しなくちゃあ...。ありがとうございます。
だるまさんへ。とりあえずタグは禁止にした方がよいかと思います。
まあ、いろいろやり方はあると思うんですが、
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
のあとに、
$name =~ s/</\<\;/g;
の1行を追加するのが一番お手軽じゃないでしょうかね。
それから、だるまさんのスクリプトでは、暗に引数(の組)が1つであると仮定してますが、これはよいとは言えないですが実質問題はないような気がします。
ほかは...大丈夫なんじゃないでしょうか。
perlのマニュアル(添付のもの)にもどんな文がまずいか、書いてあります。日本語訳が中田さんのページからもリンクのある「perl初心者の部屋」においてありますから、一度目を通してみるとよいかもしれません(でもこれに書いてあることは結構難しいです)。
http://www.st.rim.or.jp/~hirono/cgitips/tips.shtml
凄いページですね。非常に参考になると同時に、萎縮してしまう
気もします。
何度も聞いて悪いのですが、単純な例ほど理解しやすいのでもう一度。
私が最初に送ったスクリプトはローカルでもプロバイダのサーバでも
動作しました。
これには上のURLにあるsystem()関数に、メタキャラクタのある引数
を渡す事はありません。したがって、パーミッションが正しく設定し
てあれば、まずは安全でしょうか。
もともと臆病な性格ですから、ますますCGIをアップロードするのが恐
ろしくなっちゃいました(^_^;)。でも皆さんのお話を参考に、セキュリティ
の上にもセキュリティに気をつけて今後も勉強します。
今回はコメント書きにきました。(^^;いつも質問ばかりですみません。
CGI/SSIのセキュリティ云々の話です。
私は一応この道のプロフェッショナルだということですので、こうお答えしておきます。
まず、ユーザが独自に作成したCGIによって、サーバシステムが破壊されるという
可能性は十分にあります。
原因は、作成したスクリプト云々よりも、管理知識の有無によるものです。
後で述べますが、しかしながらユーザが悪いわけではなく、サーバ管理者が悪いのです。
ユーザがCGIを設置し、いいかげんなパーミッション設定をしたとします、
そうすると、そのスクリプトを第3者の手によって自由に改変できる可能性があるわけです。
この改変によって、当初考えられていたCGIの動作と全く異なる動作をいくらでもできる
ようになるわけです。これに悪意が込められていた場合、きわめて危険度が高いです。
ここで「危険度が高い」というのは結局サーバ管理者の逃げ口実のようなもので、
管理者さえしっかりしていれば、たとえ侵入されてもたいした被害にならないはずです。
管理者の油断をついて攻撃してくるのが「クラッカー」なるものですが、これは、
「管理者の油断」がすべての原因なのです。
私が思うに、サーバ管理者(プロバイダ等)が、ユーザCGIを許可しているなら、何も恐れず
どんどんCGIを作ってやればいいと思います。パーミッション設定がわからなくても、
管理者さえしっかりしたシステムを作っていれば、自動的に設定させる事も可能です。
逆にそうしていないと管理者はサーバを捨てるも同然の管理体制だと思います。
次に、もし第3者によってユーザCGIを悪意のあるものに改変され、実行された場合、
サーバの管理に抜け目がなければ、UNIXのセキュリティ上、破壊されるような事はないです。
ファイル削除や、フォーマットのコマンドなど、システム管理者でなければ実行できない
はずですし、もし第3者が容易にシステム管理者特権でコマンドを実行できるようでは
それは管理者の管理がアマいからとしか言いようがありません。
よって、ユーザとしては何も恐れる心配はないと思います。
無限ループに陥ろうとも、ゾンビプロセスの監視をしていないだけだし、万一なっても、
ちゃんとしたUNIXなら、無限ループなぞ屁でもないはずです。
よく考えてください、UNIXシステムを動かしてる機能のすべてがデーモンという形で動作し
ほとんどすべてが無限ループのカタマリなのです。
CGIが多用される事でサーバレスポンスが低下した場合、それは管理者がいち早く気づくべき
でしょう。そして、レスポンス確保のため、サーバの分散などの策を講じるべきなのです。
お金を稼いで運営しているサーバであればなお一層当然です。
わたし、業界にいて思います。管理者を甘やかしても意味がありません。ユーザがどんどん
管理者をいじめて、より管理技術の向上を望まねばならないと思います。
そういう事が、おそらく日本のインターネット環境やサーバ技術の向上に拍車を掛けると
思います。
一般ユーザではコンピュータやネットワークの事はわかりづらいかと思いますが、無駄や
合理化を進めるなどの手段でサーバやネットワークはまだまだ高速になります。
管理者や設計者が緻密に環境構築してユーザに快適な環境を与えられるよう努力すべきだと
私は思うんです。
結論は、ユーザは何も遠慮はいらんぞ、ということです。
管理者が機能を開放してるんですから。少なくとも、利用規定などは熟読してくださいね。
あららら
エラーが出て書き込めないし、ログにも出てこないと思ってたら、今ごろになっていっぱい
出て来てしまいました。
ごめんなさい(/_;)。
追記(参考までに)
「CGIでもパスを間違えると自分のCGIがファイルを消してしまうなど有り得ます」ですが、
たぶん、自分のルートディレクトリより下を指してしまうような「相対パス」により自分の
ディスクスペース外を指せてしまうのかも知れません。普通はファイルが存在しなかったり
書き込みはできないように設定されていると思いますので、エラーで動かないだけで致命的
ダメージを与えることはないのでしょう。ただ、エラー処理はキチンと入れておくべきです。
エラー処理は正常処理よりプログラミングは難しいものですが。
UNIXサーバではアクセス権はシッカリしていると思いますが、最近増えてきたNTサーバ
は気を付けた方が良いのかも知れません。
「.bakファイル等、不要なファイルは残さない」に付いてですが、以前、直接ファイルの
中身を見せることができる拡張子と、実行,ダウンロードの対象となる拡張子に付いて、
プロバイダに問い合わせたことがあります。プロバイダ内に友人が居たので、色々聞くことは
できたのですが、危険なことができる拡張子もあるということで公開してはもらえませんで
した。つまりは、知らない拡張子は使わないように注意するということです。
例えば、CGIに使われている拡張子.cgi,.plですが、.plでは実行できず(だったかな?)
.cgiに統一したことがあります。
なんか、巨大な書き込みをしてしまって申し訳ありません。
このページも巨大になって、結構読み込むのに時間が掛かるようになってしまいました。
ありゃりゃ。ダブって書き込みしてしまった。
おまけにぴゅあさんも答えてらっしゃいましたね。すんません。
追記
「CGIでもパスを間違えると自分のCGIがファイルを消してしまうなど有り得ます」ですが、
たぶん、自分のルートディレクトリより下を指してしまうような「相対パス」により自分の
ディスクスペース外を指せてしまうのかも知れません。普通はファイルが存在しなかったり
書き込みはできないように設定されていると思いますので、エラーで動かないだけで致命的
ダメージを与えることはないのでしょう。ただ、エラー処理はキチンと入れておくべきです。
エラー処理は正常処理よりプログラミングは難しいものですが。
UNIXサーバではアクセス権はシッカリしていると思いますが、最近増えてきたNTサーバ
は気を付けた方が良いのかも知れません。
「.bakファイル等、不要なファイルは残さない」に付いてですが、以前、直接ファイルの
中身を見せることができる拡張子と、実行,ダウンロードの対象となる拡張子に付いて、
プロバイダに問い合わせたことがあります。プロバイダ内に友人が居たので、色々聞くことは
できたのですが、危険なことができる拡張子もあるということで公開してはもらえませんで
した。つまりは、知らない拡張子は使わないように注意するということです。
例えば、CGIに使われている拡張子.cgi,.plですが、.plでは実行できず(だったかな?)
.cgiに統一したことがあります。
なんか、巨大な書き込みをしてしまって申し訳ありません。
このページも巨大になって、結構読み込むのに時間が掛かるようになってしまいました。
だるまさんへ。結論からいうと、そういった被害を与えることはありえます(だからこそ多くのプロバイダではCGI、SSIは禁止になっている)。
僕は想像力が貧困なのでそんなことするテは思いつかないんですが、例えば下のページを参考にしてください。だいぶ古い文章なので、今はそこに書いてあることに加えて色々な攻め方が開発されてるかもしれません。
http://www.st.rim.or.jp/~hirono/cgitips/tips.shtml
要するに、CGI、SSIでは、"外部の人がホームページの置いてあるサーバで任意のコマンドを実行できる"ということが容易に起こり得る、ということです。
ちょっと脅かしすぎかもしれませんが。
TigerCatさんへ。
すみませんでした。そうなんですよね。昔、HTML-Lintで、「リンクに"~username"は使ってはいけません。"%7Eusername"にしてください。」と散々言われたのを思い出しました。
ただ、どうやっても文字化け再現しなかったんですが......。"作"の2バイト目、文字コード236ってなんでしたっけ?
>だるま まさひろさん
まず、簡単に起こし易いのが、
・無限ループを作ってしまう。
「あるパラメータを渡すとループになってしまった」ということは有り得ます。
サーバが非常に重くなってユーザ全員のレスポンスが重くなってしまうことになりま
す。また、それがファイルへの書き出しだと、巨大なファイルを作ってしまうこともあるで
しょう。
・極端なパラメータを設定してしまう。
例えば掲示板のログの最大値を異常に大きくしてしまうなどです。
実際、10000件なんて掲示板もあります。これだと最大10MBくらいになるファイルを1回の
アクセスで毎回読み込むことになります。読み込めるのだろうか?
普通のパソコンでも10MBものファイルをコピーするのはどれくらいの時間が掛かるか判る
でしょう。プロバイダのサーバがUNIXでかつ高性能のハードを使っているとはいえ、多く
のユーザが居て、かつ、それに対してアクセスする人数倍のアクセスがサーバに行くた
め、もっと時間が掛かる筈です。やはり他のユーザに迷惑を掛けることでしょう。
「うちの掲示板重いなぁ」ではなくて設定の仕方が悪いということです。その辺の設計力
も身に付けていく必要はあるでしょう。
これはCGIに限らずHTML文書でも無駄な記述があると同じことが言えます。たった1バイト
余計でも、数万倍に膨らむことも有り得ます。
また、排他制御は色々工夫されているようですが、掲示板のログファイルが壊れて、非常
に処理が重くなってしまったという例も実際に見てきました。
などでしょうか。ここで色々挙げても切りがないので。
外から破壊される例というのは、
・ハードディスクがフォーマットされたり、ディレクトリを消されたりすることがある。
なかなか例が見つからないので難しいところですが、特にSSIを下手に使うと有り得ます。
SSIはコマンドを直接叩けるので下手な作り方をしてしまうと付け込まれる可能性があり
ます。
CGIでもパスを間違えると自分のCGIがファイルを消してしまうなど有り得ますが、気を付
けていれば、それほど神経質になるものでもないと思います。
気を付けることと言えば、
・新たに作ったディレクトリには、空でも良いのでindex.htmlというファイルを入れてお
くこと。
これを忘れるとディレクトリの中身が丸見えになり、サーバ内を自由に歩きまわれる
場合があります。相談を受けて中を見るときは外しておいてもらった方が楽ではあります
が、直接サーバに入らせてもらうのが正しいやり方ですね。
・.bakファイル等、不要なファイルは残さない。
これを利用して同様に入ることができるという話は聞いたことがあります。
・タグを有効にする場合は、必要最小限にする。
これも研究不足ではありますがあるようです。既存の配布CGIを参考にしてみると良い
でしょう。
同様にまだまだ考えられます。
折角、An HTTPdという良い環境がありますので、色々試して経験を積むのが一番だと思い
ます。やはり自信がないうちはプロバイダへのアップは控えた方が良いかも知れません。
プロバイダのサーバを使うということは、自宅のパソコンを使うのとは全然環境が違い
ますので、それを意識して1ステップ1ステップを熟知するように勉強していくのが良いで
しょう。
PerlはCでプログラミングするときの試作用として重宝されているようですので、JavaScript
より、よりシステムに近いところで処理できるため、ちょっとしたミスがシステムを壊して
しまうことは有り得ます。Cよりは安全になっているのではないかとは思いますが。
今のうちは自分のパソコンを壊しても良いくらいの気持ちで色々試して、うまく動くこと
だけでなく、どういうことをすると失敗するかということも身に付けることが重要だと思い
ます。配布されているソースを色々眺めてみるとかなり勉強になるでしょう。
自宅サーバ(An HTTPd)を表に出す場合も自分のパソコン内を歩き回られないように注
意する必要があります。
An HTTPdの場合は、たぶん専用のフォルダを用意することで、そこから外には出られない
筈ですが、そのディスク領域は別にパーティションを切って専用ドライブを用意するのが基
本です。
ディスクスペースを貸してあげるといって、そこに入るとルートまで行けてしまう環境が
作られていたりという例もあります。
また、私の使っているプロキシ/ファイアウォールサーバWinGateを探し出して入り込
むというソフトも実際に出回っているようです。
ということは、他にも破壊的なソフトが存在し得るということで、メールボム,掲示板ボム,
ICQボムなどが実在するようです。
色々余計なことまで書いてしまいましたが、経験,実践,失敗あるのみです。
みなさまこんばんは。
CGIの解説書にも必ずセキュリティの事が出ていますね。
私が入っているプロバイダは自作のCGIが使えるのですが、
やっぱりそこが一番心配です。(と言っても人に御見せで
きるようなCGIはまだ作れませんが....)特に、
> 可愛い嫌がらせで済めば良いのですが、穴を探し出して
> サーバを破壊して面白がっている人が居ることも事実
> です。
サーバを破壊するというのは、プロバイダのシステムや
他人のファイルを壊してしまう事が有り得る、という事な
んでしょうか?
例えば、私が皆さんに質問した初挑戦スクリプトに何か悪
さをされると、プロバイダのHDDがフォーマットされ
ちゃった!!!なんてことになるなら、恐ろしくてとても
素人ではCGIスクリプトなんてアップロードできませんよね(..)
> ただただ、cgiってのはセキュリティ上の抜け穴ができが
> ちなんで、注意してあげてください。
実際上悪質な攻撃を受けた場合、どの程度の被害が出るもの
なのでしょう。タグを無効にしておかなかったために巨大な
画像がリンクされた、程度なら削除すれば済むでしょうが、
人様のファイル等が壊れた、となると取返しがつかないこと
にもなります。理屈の上でも後者のような事が先の初心者
スクリプトのせいで起こり得るのですか。
それからぴゅあさん、参考書の推薦大変助かりました。学校
の図書館で見てみます。
ide さん、
PCの性能については ぴゅあさんの言うとおりだと思います。
私は、
486DX/50MHz (Win98/WinNT5.0/FreeBSD)
PentiumMMX/233MHz (Win95/WinNT4.0/FreeBSD)
をLANで結んでやっています。
開発用は Pentium の方です。
486DXの方でしばらくやっていたのですが AN HTTPD の動作はまあいいとしても、開発(コンパイル)には時間がかかりすぎて耐えられなくなりました。
Perlスクリプトのデバッグについて。
AN HTTPD では、parse CGI Output(「CGI出力を検査」)にチェックをつけておくと、Content-type が出力されない場合、標準エラー出力を表示します。
つまり、環境変数をセットしてコマンドラインでテストするのと同じ出力がブラウザに表示されます。
環境変数をセットするのは面倒ですし、GETメソッドで QUERY_STRING に '=' を含む文字列は set できませんから、CGIデバッグモードと言ってよい機能だと思っています。
たとえば、
require 'jcode.pl'; で jcode.pl がみつからなければ、
CGI 出力メッセージ:
Can't locate jcode.pl in @INC at D:\myHttpd\test\test.pl line 3.
などと出ます。
コンパイルエラーなどもそのまま出ます。
ただし、ISAPI(PerlIS)ではエラーメッセージは出ません。
CGIを通してのいたずらについては、
HTTP_REFERER やプロクシの情報などの元になるヘッダ情報は比較的容易に変えてしまうことが可能ですから、あまり有効ではないかもしれません。
もちろんチェックしないよりはした方がいいのでしょうが。。
Cookie, Java を有効にしていないと投稿できないようにして、それでアクセス元の情報を引き出したりする工夫もあるようです。
いろいろ手を打つより、バックアップをしておけばいいくらいでいいのかな、と思ったりもします。
>ideさん
Winが動いているなら、差ほど気にする必要はありません(ローカルで使う場合)。
うちは、まだ貰った古いマシンを使っているので486SX/25MHzを無理矢理5x86/133MHzとして
動かしています(自爆)。Perlを使うとちと待たされる....
NT Server側は486/25MHzのままです(核爆)。それでもある程度は使用に耐えられています。
普通の人は、Pentium或いはMMXだと思いますので充分でしょう。
表に出すなら、入ってくる人数に合わせてそれなりのCPUを使うのが良いでしょうが、プロバイダ
に比べれば微々たるものですので、気にすることはないでしょう。
まずは、今のマシンで様子を見るので充分だと思います。
はじめまして。
自宅wwwサーバに興味をもってここにたどりつきました。
いろいろ質問があるのですがとりあえず一個だけ。
pcの性能は最低どのくらいあればいいのでしょうか?
今後ともよろしくおねがいします。m(_)m
変な表現でしたね。
「GETのパラメータもURLとして指定する一部分となるのでエンコードしている」
書きながら文字コードセットの違いというのを思い浮かべていたりしたのですが。
この書き方だとPOSTの場合の説明になっていません。
想像するのは、「OS等の違いによる誤処理を防ぐため」だとは思うのですが。
というより、昔は7ビットデータしか扱えなかった名残?(今も存在する?)と言った方が
正しいのでしょう。
余談でごめんなさい。
>TigerCatさん
解決されているようですので別に良いかなと思ったのですが....
まず、エンコードは、GET,POSTに関係ないのだと思います。
想像ではありますが、2バイトコードの種類の違いにより誤動作するのを防ぐためにこのよ
うな方法を取っているのだと思います。
別の話ですが、たまにURLに2バイトコードを含めたり、ハイパーリンクは良いのだと言っ
ている方がいらっしゃいますが、少なくとも日本では日本語環境なら、これで通ることはある
のでしょうが、英語環境などでは誤動作するのでは?と思います。
つまり、GETのパラメータもURLとして指定する一部分となるのでエンコードしているのだと思
いますし、通常、2バイトコード文字で指定すべきではないと思います。
また、例に挙げられたものは説明のために簡単な例で挙げられたのかも知れませんが、その
例の場合には、言わずとも、2バイトコード文字を使わないようにするのが無駄な労力をもっ
と新たな勉強に向けられるものと思います。確かに解ってくると色々知りたくなるものですけ
ど(^^ゞ(良い傾向です<はまる(笑))
想像だけで未確認ですが(必要に迫られてないのでごめんなさい)、Aタグでは2バイトコード
文字をエンコードすることなくURLの一部として渡し、FORMタグ内では「データ部分に付い
て」2バイトコード文字のエンコードが行われるものと想像されます。
余談ですが....
'<' → <
'>' → >
と書くことでタグの記述をそのまま見せることができます。
どうもレス癖が....(/_;)
重くなるだけなので自粛しなきゃと思いつつ....
ごめんなさい。
と思ったら投稿しなきゃ良いんですけど、ここまで書いた後で思ってしまったので、ごめん
なさい。
渡辺様、コメントありがとうございます。
単純には、渡辺様のおっしゃる通りだと思うのですが、
フォームデータのデコードや特殊コードのデコードは必ず通さねばなりません。
特に日本語などの2バイトコードだと、「作」とか「表」とか、パッと見大丈夫だけど
上位バイトと下位バイトを単独で見るとデコードされるべきコードだったりして、
結果、正しく表示されなくなっちゃいます。
結局、CGIにパラメータ渡しで日本語を送る場合は、ちゃんと型にハメたように
エンコードせねば、ということで、
$hoge = "作成";
$hoge =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
と、こういう感じでエンコードして渡すようにしました。
結果はバッチシOkでした。
おさわがせいたしました。
Tigercatさんへ。
下のようなスクリプトで、ブラウザの呼び出しで引数をつけてみましたが、文字化けしませんでした。エンコードする方法もないではないと思うんですが、文字化け要因他に考えられないですか?
------test.cgi
print "Content-type: text/html\n\n<html><body>";
print $ENV{'QUERY_STRING'}."<br>\n";
print "</body></html>\n";
------
下のAタグのところ、<pre>を入れても無効にできず(あたりまえか(^^;)
書き直します。よごしてすみません。でわ、再度
-----
すみません、ちょっとperlについて教えてください。
CGIで、POSTを受けたりするとき、引数(パラメータ)を受ける部分で、
$value =~ s/%([\da-fA-F][\da-fA-F])/pack("C",hex($1))/ge;
ってやってますよね。
これは、日本語等を受けるときに、16進数でエンコードされた
パラメータを元のコードに戻すためだと思いますが、
では、エンコードは実際、どうプログラムすればよいのでしょうか。
現在、getメソッドで引数を渡そうとして、
<a href=hogehoge.cgi?action=作成>さくせい</a>
などとやっているんですが、この「作」という字がhogehoge.cgiに
わたったとき、化けてしまうんです。
よって、上記のタグを記述する時点で、「作成」をエンコードしなければ
なりません。
知っている方、すいませんが、よろしくご解答お願いします。
すみません、ちょっとperlについて教えてください。
CGIで、POSTを受けたりするとき、引数(パラメータ)を受ける部分で、
$value =~ s/%([\da-fA-F][\da-fA-F])/pack("C",hex($1))/ge;
ってやってますよね。
これは、日本語等を受けるときに、16進数でエンコードされた
パラメータを元のコードに戻すためだと思いますが、
では、エンコードは実際、どうプログラムすればよいのでしょうか。
現在、getメソッドで引数を渡そうとして、
<a href=hogehoge.cgi?action=作成>さくせい</a>
そうでした。ごめんなさい。
普段POSTしか使っていない,モジュール化してしまっているので忘れていました(^_^;)。
GETの場合は、環境変数QUERY_STRINGにデータを設定して渡す。
POSTの場合は、環境変数CONTENT_LENGTHにデータ長を設定し,データは標準入力から
リダイレクトで良かった筈です。
また、勘違いしてないかな?(^_^;)
私もホームページの文書が壊れて一時閉鎖する直前の頃、2件の嫌がらせがあり、2件目の
ときは調査できるように組み込んでおいたので、大学に苦情を出しました。
それほど多くはないものの必ず嫌がらせをして面白がっている寂しい人達が居ます。まだ、
可愛い嫌がらせで済めば良いのですが、穴を探し出してサーバを破壊して面白がっている人
が居ることも事実です。いずれにしても気持ちの良いものではありません。
自分で作ったCGIを表に出すときは本当に隅々まで気を配る必要があります。また、もっと
進んでくるとSSIを使わざるを得ないこともあるでしょう。SSIはCGI以上に気を配る必要があ
ります。未だにSSIを使うときは、かなり緊張します。
CGIにデータを渡すときにも注意しないと穴ができます。GETを使うと渡しているデータが
丸見えになるので勝手に操作することができます。また、POSTの場合でも外からCGIを呼び出
せば操作をすることができます(渡辺さんの書かれているHTTP_REFERERのチェックで検出で
きます)。これらの操作をされて異常な動作をしないように気を使う必要があります。
こう書くと大変なものだ、面倒くさいと思われてしまうかもしれませんが、それもプログラム
を研究する楽しみの一つと受け止めてもらえればと思います。
ローカルで実行している限りは心配する必要はないので、色々工夫して腕を磨いて頂ければ
と思います。
P.S.
ISAPIではdbmopen()関数などは使えないようですね。Perl5だと動作しました。Perl5では
tie()関数を使うようにとありました。
また、Perl5でも一部使えない関数(システムコマンドなのかも知れない)があるようでし
た。まだ、どれなのかは探し出していませんが、Winがハングアップしてしまいました。
全てのソースコードファイルは保存済みだったのでリブートだけで済みましたが、CGIの
テストをするときは、編集中のソースは全て保存してから行う癖を付けておくと良いですね。
ついでですので、私が勉強に使っていた書籍を挙げておきます。薄いものを買ってきたので
良いというほどのものでもありませんが、本屋で見つけたら見てみるのも良いでしょう。
・『入門Perl Perl for beginner's』秀和システム \2400+税
ISBN4-87966-751-X
簡単なサンプルが挙げられています。基本的な勉強には良いでしょう。
・『クイックPerl5リファレンス』プレンティスホール \2200+税
ISBN4-88735-054-6
関数等のマニュアルとして持っておくと良いでしょう。ちょっと説明は簡単すぎます。
いずれもPerlを使うことがメインでWeb上での利用は参考程度しか解説されていませんが、
現在ではCGIの本もかなり増えて来ているようなので、もっと良い本が出ているでしょう。
また、更に詳しく解説されているサイトが多くありますのでYahoo! Japan(http://www.yahoo.co.jp/)
などで「CGI」,「Perl」、また「UNIX」で検索して回ってみると良いでしょう。
Perlなど、より詳しく解説されているマニュアルのようなサイトもあります。
だるまさん、よかったですね。perl始めて5日目にして日本語表示までできるってのは、かなりすごいと思います。もはやperl道から抜け出せないですよ、きっと(笑)。
ただただ、cgiってのはセキュリティ上の抜け穴ができがちなんで、注意してあげてください。だるまさんもこれからどんどん凝ったスクリプトが書けるようになると思いますが、身内だけで楽しむ場合はまあ別として、不特定多数に公開するページを書くときは、セキュリティにはいくら気をつけても気をつけすぎと言うことはないです。インターネットに公開した段階で不特定多数がアクセスする可能性はすでに出ているのですが。
CGIのセキュリティに関して言えば、(何度も名前あげますが)Web裏技のminiBBSなんか、色々と細かいところまで気遣ってあります。HTTP_REFERERのチェックとか(他のページからの書きこみやURL直指定の書きこみ禁止)、REQUEST_METHODのチェックとか(GETでの書きこみ禁止)、タグチェックとか、特定ドメインの利用禁止とか。ある程度自分でもperl書けるようになったら、一通りそういう他人の書いたのを読んでみると面白いです。
(なぜこんな話をするかというと、先日僕の掲示板が嫌がらせされたからです。自前のCGIスクリプトだったんですけど、セキュリティ対策が甘いのにつけこまれました。で、上のような対処をしました)
それから、ぴゅあさんの書いてるコマンドラインでのチェック法が、POSTメソッドのやつですよね?GETの場合は、CGIに渡す文字列は、変数QUERY_STRINGに入れると思うのですが。
>だるま まさひろさん
ちょっと説明が解り辛かったようですね。ごめんなさい。
DOSプロンプトから
set CONTENT_LENGTH=2
と入力して環境変数CONTENT_LENGTHを設定した後、
perl untitled.cgi < data.txt
と入力して実行してください。
ブラウザでは詳細なエラー情報を見ることができないので、直接Perlで実行してみるのが
良いでしょう。
POSTの場合も同じような方法でテストできます。
ただ、CGIが複雑になってくるとテストするのも大変なので、デバッグ用のツールを作ろ
うかと....と、思ってはいるものの、作りたいものが増えるばかりで、なかなか作って
いる時間ができず、そのままになっていますが。
ぴゅあさん、できましたよっ!!
なかたさん、わたなべさん、できましたぁ!
ぴゅあさんが教えてくれた二行を追加したところ、
ばっちり漢字が表示されました。二日間悩んだところが一発解決です。
Perlの勉強を始めて五日目にして、やっと教科書通り動かせました!
こんなに嬉しいことは久々だぁっ。感動しました。
本当に有難うございます。
require 'jcode.pl';
$| = 1;
read (STDIN,$in,$ENV{'CONTENT_LENGTH'});
($parameter, $name) = split(/=/, $in);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*name,'sjis');
print "Content-Type: text/html\n\n";
print "\n";
print "<html><body>";
print "こんにちは、$name さん";
print "</body></html>";
__END__
追伸、0時41分のDOSプロンプト上で行う操作が良く分りませんでした。
untitled.cgiにそのままset CONTENT_LENGTH=2(漢字一文字)と追加すると
コンパイルエラーでPerlが止まってしまいました。
>だるま まさひろさん
肝心のエラーに付いて書くのを忘れていました。
DOSプロンプトを立ち上げて、CGIを置いてあるフォルダに移動した後、
perl untitled.cgi
として実行してみてください。
なお、データを渡すには、適当なテキストファイルにデータを入れ、その文字数(バイト)
を
set CONTENT_LENGTH=20 ←20バイトの場合
のように打ち込んで設定した後に
perl untitled.cgi < data.txt
のように実行してみてください。
これらを簡単に処理できるソフトは作ってみようとは思ってはいるのですが。
>だるま まさひろさん
あ、そうでした。
以下の2行をjcode'convert()関数の前に入れてみてください。
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
1行目は半角スペースが「+」に置き換えて渡されるため、元に戻すものです。
2行目は16進文字表現されたコードをバイナリ表現に戻すものです。
中田さん、渡辺さん、ぴゅあさん、はじめまして。
みなさん、本当に有難うございます。
こうして助けてもらえるととても心強いですね。嬉しくなります。
中田さん Ver.2.6でもVer.2.8でも同じエラーが出ます。
中田さんがおっしゃるサブルーチンはこれですか?これなら
書いてありました。
sub convert {
local(*_, $ocode, $icode, $opt) = @_;
return (undef, undef) unless $icode = $icode || &getcode(*_);
return (undef, $icode) if $icode eq 'binary';
$ocode = 'jis' unless $ocode;
$ocode = $icode if $ocode eq 'noconv';
local(*convf) = $convf{$icode, $ocode};
do convf(*_, $opt);
(*convf, $icode);
}
渡辺さん。そうでしたそうでした。yournameはnameに変えましたm(__)m
ローマ字ならどちらでも動きますが、jcode.pl抜きで漢字、かなを送信すると
文字化けしますし、jcode有だと、さっきのエラーで止まります。
ぴゅあさん、Perlのlibにもpublic_htmlとその下のcgi-binにもjcode.plを
コピーしました。どれか一つくらい当たると思いまして。。。
でもやっぱりだめでしたぁぁ。
あきらめたほうがいいでしょうか?
>中田さん
パス区切りは「\」しか通りませんでしたか。
X68の方を使うことが多かったので疑問には思っていたものの確認を疎かにしてしまいま
した。
WinZipですか。最初使ったときに良い印象を受けなかったので使っていませんでしたが、
情報をありがとうございます。usertools.exeは取って来ました。まだ入れていませんが。
>だるま まさひろさん
jcode.plのパスの問題だと思います。
require 'jcode.pl'では、Perlのlibフォルダ内(下位でも良い)に置いてある必要が
あります。@INCの参照で確認できる筈。
また、cgi-bin(.cgiと同じフォルダ)に置いてあるなら、require './jcode.pl'と
しなければならない筈ですが、どうでしょうか。
Assassinさん宛レス「ぴゅあ takasuka@tky2.3web.ne.jp 1998/10/03 08:34」にも
ちょっとだけ書いてあります。
すんません。変なこといいました。jcode.plの置いてあるディレクトリが違ったら、requireのところでエラーになりますね。
ところで、だるまさんのcgiスクリプトで、*yournameは*nameと書くべきじゃないでしょうか...?今回のエラーとは全く関係ないですが。
jcode.pl v2.8 にも convert はありました。うちの jcode.pl は v2.0 でしたが、v2.8 に差し替えてもそのまま動きました。
チェックするところは、jcode.plのファイルサイズ 19853バイト(違ってればダウンロードミス)、jcode.pl が cgiスクリプトと同じディレクトリに置いてあるか、だと思います。とりあえずは。
K-SUMI さんの クッキーは意外な解決でしたね。
どうしてああなったのかまだちょっとわかりませんが、まあ、解決したのならよかった、ということで。
tgz は、私は Winzip を使っています。
zip 以外に gz, tar, Z, taz, tgz は外部プログラムなしに解凍できるようです。
だるまさん、
文字どおりには、その jcode.pl には sub convert がない、ということになりますね。
v2.8 で convert は名前を変えたのでしょうか。。?
もしそうなら、
jcode.pl の中を見て、convert に相当する名前に変えるか、
convert がある jcode.pl を使う、
ということになりますが。
minibbs2 について。
Windows で動かすには、
$cp = 'COPY /Y';
に加えて、
#◆内容が書き込まれる記録ファイルのパスを設定
$file = '.\minibbs.dat';
#◆作業用ファイルのパスを設定
$temp = '.\minibbs.tmp';
とすれば、OKでした。
'.\' は必要ないので、単に、minibbs.dat, minibbs.tmp の方がいいかもしれませんが。
つまり、system() で呼ばれるのは command.com ですから、
COPY /Y ./minibbs.dat ./minibbs.tmp
ではだめで
COPY /Y .\minibbs.dat .\minibbs.tmp
でないといけない、というお話でした。
これで cp がなくてもいけます。
いろいろjcode.plが問題になっているようなので私も質問してよろしいでしょうか。
名前を書いて、こんにちは何々さんと出力するだけのかんたんなスクリプトなのですが
jcode.plを使うとどうしてもこのエラーが出てしまいます。
同じ症状が出て解決された方がいらしたら方法等を御教示下さい。
---------------------
Error 500
CGI Error - can't find Content-Type
CGI Output Message:
Undefined subroutine &jcode::convert called at
C:\public_html\cgi-bin\untitled.cgi line 5.
---------------------
jcodeを使わずにローマ字だけならちゃんと動作するスクリプトです。
*PERLのバージョンは、
This is perl, version 5.003_07
Perl for Win32 Build 316 - Built 09:44:44 Mar 13 1998
*JCODEは
jcode.pl,v 2.8 1998/09/23 17:22:55 utashiroです。
Httpdで指定するPerlのパスは
c:\jperl\bin\perl.exeです。
HTMLのスクリプトは
<html>
<form method=POST action="../cgi-bin/untitled.cgi" >
<p><input type=text name="yourname">
<p><input type="submit" value="Envoyer">
</form>
</body></html>
CGIの方は
require 'jcode.pl';
$| = 1;
read STDIN,$in,$ENV{'CONTENT_LENGTH'};
($parameter, $name) = split /=/, $in;
&jcode'convert(*yourname,"sjis");
print "Content-type: text/html\n\n";
print "\n";
print "<html><body>";
print "こんにちは、$name さん";
print "</body></html>";
__END__
どこかがいけないのだと思うのですが、もう見当がつかず、途方に暮れています。
どこそこを見よ、だけでも大助かりです。ヒントを下さい。御願します。
追記
最後の「専用のプログラムにしてしまえばかなり簡単になる筈。」とは、Perlを使っても
かなり簡単なほど簡単になるだろうということです。
挑戦してみるのも面白いでしょう。
>渡辺さん
そう。TAR32.DLLは対応しているらしいんですけど、対応ソフトが見つからなかったんで
す。
>渡辺さん&TigerCatさん
そうですね。gzipならとは思ったんですが。
それぞれ拾って来て見てみます。
その前に拡張子を本来の形に戻してみて、LHMelt,ホットコーヒーおひとつですね?を
試してみるかな?(駄目でした)X68では.tgzでいけたんですよね。gzipだったかな?
ああ、その前に取って来たファイルは「1.労働安全衛生法」とか書かれている全然関係
なさそうなテキストファイルが出てくるんですよね。その中身も壊れているし....
コマンドライン面倒くさがるようになってる。い、いかん。Winの影響が....(~_~;)。
>TigerCatさん
Content-typeの詳しいところまでは解らないのですが、確かに訳の解らないものだと実
行/ダウンロード対象と処理されるみたいですね。それともプラグインを要求したりするの
かな?ブラウザに未登録のMIMEタイプ(と呼ぶので合ってるのかな?この辺は勉強不足)
だとダウンロード対象とされるのかな?
余談ですが、どうも最近ダウンロード対象とされるべきものが、よくブラウザに丸見えに
なったり....
でも、バイナリ形式は結構大変じゃないかと思います。ZIP形式は少し面倒そうですが、
LZH形式であればUNLHA32.DLLはソースコード付きだったと思うので(APIの解説だけなの
かな?詳しく見ていません(^^ゞ)、プログラムが読めるなら理解は差ほど難しくないでし
ょう。LHAのソースコードの方が理解し易いかもしれません。
ただ、LZH形式であれば、シリアル番号の部分を1つのファイルとして、元々あるlzh
ファイルに追加するだけで良いので簡単かも知れません。
1.オリジナルのlzhファイルを配布用ファイル名でコピーを作る。
オリジナルのlzhファイルにはシリアル番号の入ったファイルを含めたインストーラ
を入れておくなど。
2.シリアル番号の入ったファイルをLHAで配布用ファイルに追加する。
圧縮処理は自分で書くよりLHAとかをそのまま使うのが簡単ですね。
3.配布ファイルを公開する。
これだと、ファイル生成後にダウンロード用の画面を出力させてクリックさせるという
こともできますね。
自己解凍形式のexeでもたぶん同じ方法でいける筈です。
しかし、これはローカルサーバを表に出してやろうとしているのでしょうか。それと
もプロバイダのサーバを使って?
プロバイダのサーバだとUNIX版LHAが入っているかどうかですが、gzipは大抵入って
いるのでしょう。しかし、かなりサーバに負担を掛けて他のユーザに迷惑を掛けそう
な気はしますが。
極力軽くするには、シリアル番号のファイルを無圧縮でlzh形式にして(かつ、この処
理は極力軽くPerlではなくCとかで別に書く)オリジナルファイルの後ろにそのまま結合
するという方法を取れば良いでしょう。専用のプログラムにしてしまえばかなり簡単に
なる筈。
下の追加。Cygwinは、cpも含めたほとんどのコマンドはWin95(98)でもちゃんと動作します。
ぴゅあさんへ。
そうですか。標準出力は関係ないのですか...。command.comの戻り値どうこうの話はよくわからないんですが、やっぱりUnix likeなcpコマンドを使うのが一番でしょうね。
で、cpコマンドですが、この間も書いたように、中田さんのページからリンクが張ってある、"Cygwin32"てののがいいですよ。インストーラもついてますし。cpだけじゃなくてbashとかもついてます。Win95だとbashをはじめいくつかのコマンドは不具合があるみたいなんですけどね。NTなら大丈夫。
あと、tgz形式の解凍は、下のページからたどってみてください。tar32.dllってのはtgz形式にも対応してるようなので、あとは対応ソフトがあるかどうかですね。時間なくてあまり細かく見てません。
*.tgzの拡張子って、
*.tar.gzの省略ですよね。
だから、gzip -dc hogehoge.tgz | tar xvf -
で解凍できるんぢゃぁないかなぁ。
tgzをtar.gzにリネームしてからのほうがいいかな。
ぴゅあさま、中田様、いつもご回答ありがとうございます。
cgiで、シリアル番号を埋め込んだファイルのダウンロードさせ方、曲がり技(?)で
できました。
現在まだ実証中で、もっといい方法があるかも知れません。
サーバのMIMEの設定で、適当な拡張子TIGをapplication/x-tigerで登録し・・・
1) ブラウザからリンクをクリック(download.cgi)
2) サーバでdownload.cgiが動く。返すヘッダは・・・Content-type: application/x-tiger
として、その後スクリプトでドンドンprintする。シリアルなども埋めてprintしまくる。
3) なんとブラウザ側でダウンロードが始まる。ファイル名はdownload.tigとかになるようだ。
MIMEのタイプの工夫で、TIGを作らなくてもいいとか、application扱いから逃れるとか
できそうです・・・(よね)exeとして送るのはまずそうだし・・・あ、BATなんかいいかな?!
一番カッコイイのは、LZHやZIPの構造を勉強して、CGIでこれらのアーカイブを吐く?!
ようにしちゃえば完璧なんですが・・・(^^;;;;;
いやー再三摩訶不思議な質問ばかりしまして申し訳ないっす!! m(_ _)m
>Assassinさん
UNIXコマンドあったのですが....
tgzの解凍ソフトが見つからなくて(夜が明けてしまった(/_;))解凍できず、確認はで
きませんでした(或いは、このtoolの圧縮ファイル自身が壊れているような気もしないで
はありませんが。1個だけ検出されるファイルの内容がおかしい=toolと関係ない内容の
テキストファイル)。
http://www.vector.co.jp/vpack/filearea/win95/util/other/にUNIX-like tools
というのがあります(DLL版もあるので、何かの役に立つこともあるかも?知れないので
インデックスの方のURLを示しておきます)。
Win版のtgz解凍ソフトは見つかりませんでしたが、DOS版は昔あったように記憶していま
す。
また、cp.exeはDOS時代には単体で?あったように記憶しています(X68だったかな?)。
>渡辺さん
Assassinさんが動かなかったということですので、一応レスしておきます。
system()関数はコマンドの戻り値を求めている筈なので、標準出力自体は関係ないのだ
と思います(ただ、この出力がブラウザに行ってしまう場合もあるのでは?という気もしま
すが)。
command.comの戻り値がちゃんと取れていないのでは?と思えたりします。perlのソース
コードを確認した訳ではないので推測でしかありませんが。
そう言えば、これは、渡辺さんの示したテスト結果に現れていると思います。
・cpは正しくエラーを返しているが、copyは常に「0」(正常終了)となっている。
・標準出力が影響しているとすれば、0ではない筈です。
結論として、command.comは正しい戻り値を返していない(コマンドの実行結果でなく
command.com自身の結果を返す?)のでしょう(そう言えば、DOS時代からそうであったよ
うな気も?)。
ごめんなさい。説明不足だったかもしれません。
下に書いた3ヶ所を訂正する以外に、$cpは、
$cp="copy /y";
としなくちゃいけません。これでもできないですか?
CGI(perl)については、自分で掲示板設置したりしてると、すぐに覚えられます。特にネットサーフレスキューのやつは親切に説明が書いてあるので、大変参考になりました。(ちと汚いですが)
うーん、言われたところを書きなおしましたが、動きませんでした、残念
ここは素直にあきらめます。
しかし、さすがとゆうかCGIもソース見てバリバリわかっちゃうんですねすごいです、尊敬しちゃいます(^^)
ありがとうござました。
ありがとうございました。
>AN HTTPD の Options/General で ExecProg for .pl, .cgi(「.pl, .cgi の実行プログラム」)のところの jperl を perl
で直りました。
minibbsはv8.82sをつかっています。
クッキーの件ですが・・・
みなさん、お騒がせしました、原因がだいたい分かりました。
PlISi316.exeをインストールし直したら、上手くいきました。
もしかしたら、今までは、ぜんぜん違うモノをインストールしていたのかも(-_-;)
これで、十二分にAN HTTPDを活用することが出来ます(^^)
戻り値が異なるというか、"1 個のファイルをコピーしました."の1が効いてしまっているような気がします。そういえば昔中田さんもそう言ってましたね。
最後に">nul"をつけたら、(ファイルが存在するときは)同一の出力になりました。
んで、minibbs2なら、
if (system("$cp $file $temp")) { &error('Error','外部シェルコマンドが使えないか実行できませんでした.<br>$cp設定等を確認してください.'); }
という行(3箇所ほどある)を
if (system("$cp $file $temp >nul")) ......(以下略)
とすれば動くんではないかと思います。が、未確認です。
Cygwinのusertoolsも今のバージョンはインストーラまでついて導入が簡単なので、これにするのが一番と思います。
テストしてみました。戻り値異なります。
D:\public_html>type test.pl
print "_".system("cp existent.file existent.file.bak")."_\n----\n";
print "_".system("copy /y existent.file existent.file.bak")."_\n****\n";
print "_".system("cp unexistent.file unexistent.file.bak")."_\n----\n";
print "_".system("copy /y unexistent.file unexistent.file.bak")."_\n****\n";
D:\public_html>perl test.pl
_0_
----
1 個のファイルをコピーしました.
_0_
****
cp: unexistent.file: No such file or directory
_256_
----
ファイルが見つかりません. - unexistent.file
0 個のファイルをコピーしました.
_0_
****
D:\public_html>
minibbs2 は、私のところは cp.exe があるので、そのままできました。
でもなぜか COPY で代用するとうまくいきませんね。
perl.exe で system()の返り値については、DOSコマンドシェルへの戻り値が違うからでしょうかね。。?
なお、system() と open時のパイプ、リダイレクトなどは ISAPI では動作しないはずです。
>Assassinさん
minibbs2の確認をしてみましたが、どうもsystem()関数が機能しないようですが
どうなのでしょうか。Perl.exe,ISAPI共に正常に動作しないようでした。
・コマンドが実行できなかったという戻り値が返ってこない
・copyコマンドで代用できると思うが実行されない
cpコマンドに付いては、Win上で動くUNIXコマンドがあったあったように記憶して
います。
しまったまた書き忘れ三連続ですいません。
テスト環境は、Win98 An HTTPd v1.02 IE4.0日本語版(Win98の物そのまま)
>ゆむさん
私はWar-FTPD v1.66x4を使用して、httpdと連動して動かし、かなり細かく設定したりして
使っていますが、ハングしたことはありません。
最新版のupdataはあてていられますか?もしやっていないなら試してみてください。
レスありがとうございます。#!のチェックをつけたら動きました(cgi側のパスは正しいとゆうことでしょうか)
また、教えていただいた方法でも動きました。
うーんAUTOEXEC.BATも手書きで書き変えたのになあ(^^)
また質問があります。
今度はminibbs2がうごきません、原因はシェルのCPのパス設定がされていないからだと思われますが、
このCPとゆうものは使えるのでしょうか?
>ゆむさん
よく解らないままの中途半端なレスですみません。
War-FTPdに付いて確認してみました。
v1.65とv1.70β1subrelease4で確認してみましたが、v1.65に付いては勉強不足でうまく
アクセスはできませんでしたがハングアップ等は確認できませんでした。
v1.70βに付いても同様です。こちらはブラウザへの表示が不安定であるように思われまし
たが、きちんと動作しました。個人的にはこちらの方が解り易いかなという印象を受けまし
た。
また、SERV-U v2.4aに付いても確認しましたが、うまくアクセスはできませんでしたが、
SERV-Uからの応答は返ってきますし、ハングアップ等もありませんでした。こちらは日本語
で詳しく説明されているサイトがあるのでちゃんと動くようにするのに時間は掛からないと
思いますが、使った感触ではWar-FTPd v1.70βが一番お気に入りかなという気がしました。
きちんとしたレスでなくて申し訳ありませんが、このような結果でした。
なお、War-FTPD v1.65はAn HTTPdが起動されている状態ではインストールできませんでし
た。この辺のところは解っていらっしゃると思いますので原因とは関係ないのだと思います
が。
テスト環境は、Win95OSR2,An HTTPd v1.02,ネスケ v4.06日本語版です。
さかなさんからのメールで、
1.00 以降で、ドキュメントルートがルートディレクトリ(C:\ や A:\ など)だとうまくアクセスできないバグがありました。
次の版で直す予定です。
K-SUMI さんのは、Set-Cookie: の前に "\n\n" が出ているなら納得できるのですが。。
Lynx なら Set-Cookie: から出るかとも思ってやってみましたが Version 2.7.1ac0.97 ではちゃんと動きました。
>K-SUMIさん
一応、確認してみましたが、再現できませんでした。
IE v3.02/ネスケ v4.06(Win95)でPerlとISAPIで確認してあります。
WinNT4.0Sでは設定が悪いのか?Perlではデータが送られてきませんでしたが、
ISAPIでは問題はありません(WinNT4.0SでPerlでのテストはあまりやってなかっ
たような?(^_^;))。
少なくともSet-Cookieはただの文字列としてブラウザに渡されるだけだと思い
ますので、ブラウザに届くまでは問題ないのだと思います。
ブラウザがCookieの処理に対応していないものなのか(今時あるのだろうか?)、
ブラウザが認識できていない(壊れている)のかも知れないという気もしないで
もありませんが。
木村さん、
こちらこそよろしく。何かありましたら遠慮なく書いてください。
K-SUMI さん、
最初の http://.../.../memo.cgi では正常に表示されて、投稿するとそうなるのですよね?
ブラウザの種類とバージョンは何でしょうか?
プログラムもらっていきます。
結城 浩著 Perlで作る CGI入門 の案内できました。
今後もよろしくお願いします。
16998.10.3 MK(木村元一)
何度もすいません。
下のような表示になります。
下のはソースコードを覗いて張ったもので、ちゃんと動作はしてます。
クッキー以外は。
ほかのマシンにもインストールしているのですが、同じ症状です。
HTTPDの再インストールしましたが、同じでした。
やはり、、、なんか私の設定が間違ってるだけだと思うんですが(;_;)
Set-Cookie: http://www.xxx.or.jp/~user/=name:sw,email:ttt@ttt.tt.tt; expires=Monday, 02-Nov-98 13:02:36 GMT
Content-type: text/html
<html><head><title>シンプルメモ</title></head>
<body bgcolor=#ffeedd>
<h1>シンプルメモ</h1><p>
・・・以下略・・・
K-SUMIさんの、改行がうまく行っていないですね。現象としては、単体で動くCGIをSSIとして動作させたようなときのような感じだと思うのですが。
「(以下正常に起動)」というのは、タグ剥き出しとかじゃなくてちゃんと表示されるということですか。壁紙なんかもちゃんとでますか。
>K-SUMIさん
丁度書いているときに、中田さんのカキコにダブってしまったようですね。
調べる必要はないのかな?
>ゆむさん
私もテストしてみようと、集めているところです。
Serv-U+SendFontもどんなものであるのかダウンロードまではしました。
Win95,WinNT4.0 Serverにて確認してみます。
>K-SUMIさん
Simple MEMOでしたか。
どうもダウンロードサイトが重いようなので取ってこれるかは判りませんが
確認してみます。
>Assassinさん
perl.exeのパスはちゃんと設定していますか?<Option/General
また、jcode.plが正しいパスにありますか?
私は各フォルダにjcode.plを入れたくないので、\Perl\libフォルダ内に
i386-win32というフォルダを作って共通ライブラリ用のフォルダとしてjcode.pl,
cgi-lib.plを入れてあります。確かプロバイダのサーバにあったものをそ
のまま貰ったものです(cgi-lib.plはあまり見掛けないようですね)。
忘れてしまいましたが(ごめんなさい)単にフォルダを作っただけで特に
設定とかは必要なかったように記憶しています。これによりrequire 'jcode.pl';
と記述するようにしています。
参考資料を見る限り問題はないように思われますが、Perlへのパスが正し
く設定されているのかは前述の通り気になります。デフォルトでは確か'jperl'
となっていたと思いますので'C:\http_daemon\perl\bin\perl.exe'と直す
必要があります。
後、minibbs.cgi内にURLを記述する部分があったように記憶しているので
すが、そこが間違っていてもエラーが出ます($reload?)。
>中田さん
An HTTPd終了時です。終了処理の途中で止まりました。その後のテストは
行っていませんが、これ1回きりです。
また、勝手に宿題を増やしてしまったような(^_^;)。
自分んちの掲示板が作れるのは何時のことやら(^_^;)。
あ、ちと複雑なのを自作してるんです。CGIは全て自作しているので。(^^ゞ
K-SUMI さん
Simple MEMO v1.2 やってみましたが、ちゃんと動作してしまいました(Win95)。
Assassinさん、
Options/General の ExecProg for .pl, .cgi に
C:\http_daemon\perl\bin\perl.exe
と入れてください。
すいません
>URLをうちこみ、実行しようとするとjperl.pl や perl.pl どちらでも
URLをうちこみ、実行しようとするとjperl.exe や perl.exe どちらでも
ですね
はじめまして、minibbsについて私も質問があります。
URLをうちこみ、実行しようとするとjperl.pl や perl.pl どちらでも
Error 500
CGI Error - can't exec "perl C:\http_daemon\public_html\cgi-bin\minibbs.cgi ", errorcode = 2, No such file or directory
</HTM
と表示されてしまいます。
初心者なのでわかりません、もしかして、すっごいくだらないことなんでしょうか?
アドバイスお願いいたします。
参考資料
OS = Windows98
C:\http_daemon にhttpd.exeがあります。
/ = C:\http_daemon\public_html
/cgi-bin = C:\http_daemon\public_html\cgi-bin
/cgi-bin/minibbs.cgi = C:\http_daemon\public_html\cgi-bin\minibbs.cgi
jcode.plは = C:\http_daemon\public_html\cgi-bin\jcode.pl
perlの置き場所 = C:\http_daemon つまりC:\http_daemon\perl\bin\・・・
K-SUMIさん、
text/plain で出てきているような感じですね。
まだ私は試していませんが、その CGI のファイル名 と どういうURL指定で動かしたかを教えてください。
ぴゅあさん
WaitForSingleObject で固まったのは、オプション変更の時か AN HTTPD終了の時ですね?
ゆむさん、
なるほど。
では、私も Win98で WarFTPD 常駐でテストしてみます。
Takachinさんの、最初のエラー
>tr : both end of - should be kanji at ./jcode.pl line 250.
は、jperl.exe が出しているエラーです。
FAQの意味は、
AN HTTPD の Options/General で ExecProg for .pl, .cgi(「.pl, .cgi の実行プログラム」)のところの jperl を perl にする、という意味です。
(もちろんリネームしたのは元に戻してください)
漢字を含む正規表現を使う場合や漢字をSJISコードで扱う場合は jperl の方が安心ということはあります。
chat, BBS くらいであれば大丈夫でしょうが、サーチエンジンとかになると perl だと苦労するかもしれません。
クッキー対応のSimple MEMO v1.2 てのが、レスキューのHPにあったので、試してみると
Set-Cookie: http://www.xxx.or.jp/~user/=name:1111,email:111@ppp.oo.pp; expires=Monday, 02-Nov-98 07:29:11 GMT Content-type: text/html
シンプルメモ
(以下正常に起動)
てなぐあいです。
まだ再インストールとかはしていませんが、
もしかしたら何か設定いじれば直るのでしょうか?
jperlが必要なら、一応、ここ(http://www.yk.rim.or.jp/~hizumi/perl/index.html)にあります。
私はperlしか使っていませんが。
余計な付け加えかも知れません。
minibbs.cgiでは、引数の解析のときにjcode.pl内の関数を使います。ですから、初めて起動したときは当然queryはありませんから、エラーは出ません。perl.exeをperlスクリプトとして解釈すると、うまい具合に 1で終了するようになってるんでしょうね。即効eofコードが出てくるのかもしれない。
たしかにperlとjperlではtr///などの仕様がちがうので、それぞれにきちんと対応したjcode.plを使う必要があるのですが、最近jperl.exeってあまり見かけませんよねえ?ここのリンクページから入手できるのはperl.exeですし、Takachinさんも文中で"perl.exe"と書いてらっしゃいます。
とすると、perlとjcode.plの愛称の問題ではなくて、jcode.plがおかしいの"かも"しれません。minibbsが公開してあるのと同じ場所に置いてあるjcode.plはV2.0ですが、そちらを使ってみてはどうですか?僕はV2.0で問題なく動いています。
ときに、jcode.plは一度エディタ等で開いて一通り目を通してみることをおすすめします。勉強になります。
perl.exeをリネームしてしまったそうで、ご愁傷様です。変なことになる前に、元の名前に戻してやってください。
先のテスト後、Win95側は正常に終了しましたが、WinNT4.0 Server側は
「WaitForSingleObject -- hMailSlot」(タイトルバー)で固まってしま
いましたので報告しておきます。
強制終了させたときに落ちてしまうといけないので、取り敢えず先に書い
ておきます。何か他の症状があれば後で追記します。
やっぱり漏れていました(^_^;)。
>K-SUMIさん
v8.8とはminibbsです。
また、再インストールの対象にはPerlも含めてみてください。
>&みなさん
一応、私のところでは問題なく動作しましたが、同じWinと言っても、他に
インストールされているソフトの違いから、実際には異なる環境となります
(絡むとすればDLL)。
従って、ひとりひとり自分の環境の確認は必要だと思います。
もしかすると、何かのソフトが悪戯をしているのかも知れません。
ハングですが、WarFTP常駐(OFFLINE)ではハングします。
WarFTP常駐しないでハングはした事ありませんが。
Winごと凍結する事が殆どでどういう状況でハングするのかは不明です。
一般保護エラーが出て「アプリケーションの終了」を選んだ瞬間にフリーズ、というパターンが一番多いです。また、時々問答無用でフリーズします。
さらに、タスクトレイ上のアイコンの上にマウスを持ってくるとフリーズしたこともありました。
Winを再インストール(上書き)してもハングは直っていません。
クリーンインストールは時間がかかりすぎる為まだ試していません。
>K-SUMIさん
そう言えば、既にCookieを使っているCGIはテスト済みでした(^_^;)。
ゆいちゃっとですが、問題なく動いています。
また、フレームの勉強用に落として来ていたChat King2も試してみましたが
問題ありません。
Web裏技の方はminibbsを試してみましたがエラーで動きませんでした
(テンポラリファイルの作成辺りに問題があるらしい)。また、wwwbbsはダウンロード
サイトが重くダウンロードできませんでした。
でも、以前友達のテスト用に動かしていたものを持ってきたところ、これも
問題なく動きました(v8.8)。
従って、推測ですが、An HTTPd,ブラウザ或いはWin環境が何処か壊れてい
るのかも知れません。再インストールして試してみるのはどうでしょうか。
因みにテストは、Win95側のAn HTTPdとネスケv4.06/jaで行いました(同一
マシン上)。また、perl.exe最新版,ISAPI(PerlIS.DLL)で確認しました。
>きくちゃん
サーバ側(WinNT4.0 Server)のAn HTTPdを立ち上げ、クライアント側
(Win95)のネスケv4.06で確認しました。
CGIのテストは簡単にするためにゆいちゃっとを使いました。ISAPIで確認
しています。ローカルでのテストと、クライアントからインタネに一度出て
サーバにアクセスするという方法を取りました。テストを10分以上行いました
ので最低40回はリロードしていることになります。結果は問題ありませんでし
た。
また、同様にWin95でのテストとしてクライアント側(Win95)のAn HTTPd
を立ち上げ、サーバ側から出てクライアント側にアクセスするという方法で
テストしました。やはり結果は問題ありませんでした。
HTMLのテストも同様の方法でそれぞれ再読み込みボタンにより最低20回リロード
しました。結果はやはり問題ありませんでした。
K-SUMIさんのレスに書いたと同様に検討してみてはどうでしょうか。
因みにIE v3.02ではCGIが正常に動作しないという障害を確認しています。
>能天気マスターさん
IE v3.02とネスケ v4.06で確認してみましたが、問題はありませんでした。
ただし、書かれているソースには余計な「>」がありましたので、これは
直しておきました。
>Takachinさん
perl.exeをjcode.plにリネームしたというのは名前を変えたということでし
ょうか。
jcode.plのバージョンの違いによる解説は読んだことがないので判りませんが
perl.exe,jperl.exeというプログラムを使うということです。
ただ、マスターキーの画面が出たというのはちょっと変?とも思われますが。
また、下のエラーは本来jcode.plを読み込む筈なのにperl.exeを読み込んで
いるためと思われます。しかし、そのCGIを動かしているperl.exeは何処にある
のでしょう???
上のエラーはjperl.exeでjcode.plを使ったためと思われますが、どうなので
しょうか。
なお、jcode.plを使う場合は通常perl.exeを使うのが正解だと思います
(jcode.plをjperl.exeでは使わないようにと読んだような?)。
一応、これで宿題は消化したかな?
はじめまして。httpdを使ってcgiのminibbsのローカルテストをしようとしているのですが、
tr : both end of - should be kanji at ./jcode.pl line 250.
とでます。jcode.plは2.6です。
そこでここのFAQをみたところ
−−−−−
jcode.pl を使うとエラーが出ます。
jcode.pl は、どうやら、
jcode.pl v2.0とそれ以降は、perl.exe
jcode.pl v2.0より前のものは、jperl.exe
で使う、というのが正解のようです。
−−−−−
とあるのでperl.exeをjocode.plにリネームして使うと
minibbsのマスターキーの設定/変更の画面がでたのでうまく行ったかな?と思いましたが
登録のボタンを押したら
Unrecognized character \220 ignored at ./jcode.pl line 1.
Unrecognized character \003 ignored at ./jcode.pl line 1.
Undefined subroutine &jcode::convert called at A:\www\takachin\public_html\cgi-bin\mbbs\minibbs.cgi line 176.
と でてしまいました。
どうすればよいのでしょうか。
中田様>
新作のAN HTTPD 1.02 を使わせてもらっています。
前にお願いした基本認証の件は、きれいに直っていました。
理由はわかりませんが、動作速度も上がったようです?
ありがとうございました。
きくちゃんへ追記。
すみません、OSは Win95 でしたね。
バージョンは 4.00.950, 4.00.950a, 4.00.950b のいずれかかお知らせ下さい。
(システムの情報で出ると思います)
ぴゅあさん、
URLの件は了解しました。
長くなりすぎでも余計でもありませんので、今後もよろしくお願いします。
きくちゃん、
死んだままというのは、CTRL-ALT-DEL で[応答なし]になるのでしょうか?
IEも止まるというと、なんでしょうね?
OSの種類(95/98/NT)とそのバージョン、メモリ量、仮想メモリのドライブの空き容量を教えてください。
yama さん、
エラーメッセージは symlink 云々とは変わったのでは?
そのメッセージをにらめば解決するかもしれません。
TigerCat さん、
なるほどそういうのは面白いですね。
私もちょっとすぐにはいい方法は思いつきません。
ファイルを加工して Location: でどうかとも思いましたが、直接ダウンロードされるのを防げませんし。
また、何か考えついたら書きます。
脳天気マスターさん、
了解です。一応注意したつもりだったのですが。
次版で直します。
K-SUMI さん、
クッキー対応はしているつもりです。Set-Cookie: ヘッダの内容を出すのは仕様ではありません。
クッキー部分が見えるというのは、"Set-Cookie:" から見えますか?
どのスクリプトでそうなるのかお知らせ下さい。
>中田さん
URLの方はページを作り始めたらメールします。
まだ、人に見せるのも恥ずかしいような代物ですので(^_^;)。
>きくちゃん
ちゃんとした回答はあるのだと思いますが、一応気になった点を挙げておきます。
大抵の人が見落しているクラスタ欠陥。もしやっていないなら、一度スキャンディスク
を掛けてみてはどうでしょうか。もし、これでエラーが検出されるようなら
インストールし直せば直るのかもしれません(圧縮されているということなので、
領域の取り直しもした方が良いでしょう)。正常なら....回答を待ってみてく
ださい。インタネ上に出すのは新しいマシンでサーバを立ち上げてからと思って
いるので今のところ簡単なテストをしただけで、まだ先になるので。
それから、圧縮はなるべく最終手段とした方が良いですね。ハードディスクも随
分安くなりましたし。ただ、物理的に増設が不可能であるのなら仕方のないことで
すが。
また、動かなくなるというのはリソースの不足ということも考えられますが、
ワープロなどが立ち上げられるのなら、そうでもなさそうですね。ローカルであるか
どうかで(たぶん)内部処理が変わるとも思えませんし。
ちょっと、余計なレスだったかな?
こんばんわ
お返事ありがとうございます。
ローカルで使用しているときは、CGIでも問題は無く、動作しています。
しかし外部からアクセスすると、はじめは問題無いのですが、数ページ目になると、動かなくなります。今回は、HTMLで記述したものだけです。CGIは、使っていません。
あと、復帰後と言っても、AN HTTPは、死んだままですし、IEも動作しなくなります。
(別のHPが、検索中のまま見れなくなります。)
動くのは、それ以外のワープロとかそんなものです。
また、時折、終了画面のまま停止してしまう事が有ります。あと一歩で、再起動するんですが?。
PCは、松下 CF-23KPX Win95 のまま。あと、圧縮ファイルで使っています。(これが、問題だったりして!)
よろしく、お願いします。
ちょっと長くなり過ぎたかな?
ごめんなさいm(__)m
>西岡さん
余談ではありますが、1本化するのは、使いやすい,いくらかリソースの消費等は
減る,インタフェースが簡単になる(?)分軽くなるなどの利点はありますが、
メンテの手間が増える,障害の発生率が上がるということで、一兆一反です。
なお、WingateはLANを構築されている方には便利だと思います。かなり高機能です。
ただ、海外製ということもあってか、(当然?)テレホには対応していないので、
SuperRASの自動運転機能をお勧めします。私は、ICQ等を使用しているので、WinGate
にプロキシ/ファイアウォールサーバとしての機能、SuperRASにテレホタイムの自
動運転機能を併用して使っています。WinGateの自動ダイヤル機能が使えていないの
がちょっと不便ではありますが。取り敢えず、SuperRASをServer/Client構成にして
使っています。
また、LANを使っていない方でも、SuperRASの自動運転機能は便利だと思います。
特にAn HTTPdでインタネ上に自分のサーバを出すのであれば(確か、ここのトップ
ページにも、それに似た?リンクがありますよね?)。
>yamaさん
時間があれば、私も確認してみましょう。当てにはしないでください。(^^ゞ
>TigerCatさん
私もそれほどCGIに長けているという訳ではないのですが(まだ初心者レベルかも
しれない)、思い付く方法は、
1.ブラウザから飛ぶCGIにはシリアル番号に関する処理をすると共に適当な確認
画面でも出すようにしておく。その画面には実際のダウンロードのためのAタグ。
2.リンクをクリックすることで実際のダウンロード。
という感じですが、送られるファイルにシリアル番号を埋め込むということでしょう
か?
そしそうであれば、テキストファイルであったとしても、たぶん、そのままでは
ブラウザに表示させることしかできないのではないかと思います(勉強不足)。が、そ
れを「名前を付けて保存」してもらうようにすれば良いのかな?とも思われますが。
当然、この場合はtext/htmlではなくtext/plainを指定することになりますよね?
>能天気マスターさん
あとで試してみます。
なにしろ、台風の長雨の所為かエアコンが壊れたらしくブレーカーが落ちてしま
って、このレスを書いてる途中で東京電力の人が来て調べてたもので、そのまま時
間が掛かってしまいました(T_T)。
>K-SUMIさん
私も近々Cookieのテストをするので確認してみます。
びゅあさん、Wingate, SuperRASの情報をありがとうございます。さっそく試してみたいと思います。
中田さん、機能が1つのソフトにまとまっていた方が使いやすいと思いますので、ToDoに加えていただけると有り難いです。
西岡邦昭
symlinkがだめなので・・・という事ででしたね
それてopnの2にしてもnoの0にしても、
駄目なのはぼくの頭のタリナイことでしょうか。
ぴゅあさん、中田さん、コメントありがとうございます。
どうにかデーモン的な事がやりたいのですが、なかなか難しいですね。
telnetを許しているプロバイダなら、ユーザcronに登録するというのが
筋なのでしょうかねぇ。でもなかなかtelnetまで許している所はないですね。
さて、たてつづけに質問で申し訳ないのですが、
あるcgiで、ファイルのダウンロードをさせたいと思っています。
なぜcgiかというと、ユーザのダウンロード毎にシリアル番号を埋め込みたいんです。
イメージはなんとなく・・・
1) ブラウザからcgiのリンクをクリック
2) サーバ側のcgiが動く
3) cgiからの出力は普通はContent-type: text/htmlで返すべきだろうけど
これをファイルのダウンロード用のヘッダで返す ?!
4) cgiの中身でドンドンprintした内容がクライアントへ転送される はず。
5) クライアントにファイルとして格納される
という感じなんですけど、どうcgiを作ったらいいんでしょう。
ポイントは、ファイル名の処理かなと思うんですが・・・
いまいちわかってません。(;_;)
はじめまして、AN HTTPDを使わせて頂いております。
ホームページを作成するのに「HOTALL Ver.5.0W」を使用しているのですが
ソースの最後「</HTML>」に改行を入れてくれないのです。Ver1.0 以前の
AN HTTPDでは問題なかったのですが、Ver1.0以降よりゴミが付く様になり
ました。(以下簡単なソース)
-------------------------------
<HTML>
<HEAD>
<TITLE></TITLE>
<META NAME=GENERATOR CONTENT="HOTALL Ver.5.0W">
</HEAD>>
<BODY BGCOLOR="#333344" TEXT="#ddddbb" LINK="#227722" ALINK="#ffddaa" VLINK="#8899ff">
<P><TABLE BORDER>
<TR>
<TD><BR></TD><TD><BR></TD>
</TR>
<TR>
<TD><BR></TD><TD>><BR></TD>
</TR>
</TABLE><BR></P></BODY>
</HTML>←改行しない
---------------------------------
上記のを表示させると最後の方が
</TABLE><BR></P></BODY>
</HTML>><BR></P></BODY>
となり、「>」がブラウザ画面に表示されてしまいます。
まぁ〜、エディタで改行を入れれば良いだけの事なんですが
以前のバージョンでは問題無かったものですから、一応報告
まで。
はじめまして、AN HTTPDを愛用している者です。
さっそく質問しますが、ANHTTPDは、クッキーには対応しているのでしょうか?
ネットサーフレスキューの所にあるCGIスクリプト使ってみると、取りあえずは動作するのですが、クッキーの部分だけ、何故か文頭に裸で見えてしまうのですが、、、
仕様なのでしょうか?
ゆむさん、
ハングというのは Connected ...(接続:)で止まってしまうということでしょうか?
2分くらい待ってもそのままでしょうか?
WarFTPD を止めても状況は同じでしょうか?
まあ、はっきり症状が言えるようなら悩まないと言われそうですが、もうちょっと状況を説明してください。
HTTPD のバグの可能性はないとはいえません。
TigerCatさん
AN HTTPD では、クライアントからの接続が切れるとプロセスを中止させます(そのはずです)。
ISAPI の場合は タイムアウトがあります。
一般には、httpd でタイムアウトが設定されていると思います。
UNIX では親は死んで子を生かすというのはあると思いますが、CGIでそれをやってタイムアウトにひっかからないのかどうかはよくわかりません。
生かせたとしても、やるべきではないでしょうけど。
さかなさん、
お久しぶりです。
私もちょっと内容がつかめません。
DocumentRoot:[. . .] と [/~user ]->DocRoot\[. . .] のところはどういう設定でしょうか?
ぴゅあさん、
URLがわかりませんので教えてください。
きくちゃんへ、
「画面が流れる」状況がどんな状態かちょっとわかりませんが、「復帰後」というと復帰するわけでしょうか?
errors.log, httpd.log に手がかりは残っていないでしょうか?
また、通常のファイルへのアクセスだけの話でしょうか、それとも CGIやSSIがからんでいるような感じでしょうか?
西岡さん、
ぴゅあさんが作ってくれるのかもしれませんが、ToDo には入れておきます。
はじめまして。
いきなりですが、最近HTTPDがよくハングしてしまい困っています。
Winが不調なのか、HTTPDにバグがあるのか良くわからない状況でどうしたものか悩んでいます。
Winは98で、他にWarFTPを常駐させています。
解決方法などあれば教えていただきたいのですが。
>TigerCatさん
プロセスは生きたまま残っちゃうでしょう。詳しくは勉強不足ですが。
これをプロバイダのサーバでやった場合は、大抵監視プログラムが動いていると
思いますので数分後には殺されるでしょう。
仮に監視プログラムが搭載されていないプロバイダがあったとしても常識的に御法
度です。他の多くのユーザに迷惑を掛けることとなるでしょう。
ローカルで動かす場合は延々ループを続けることでしょう。
>さかなさん
いまいち、内容がつかめないので、中田さんに委ねることとさせて頂きます。
こんにちわ。どなたか知ってたら教えてください。
ANhttpdに限らず、すべてのhttpdで、どうなるか非常に興味を持っている内容です。
たとえば、単に永久ループするだけのCGIを作成し、それをクライアントのブラウザから
呼び出すとどうなるでしょうか。
当然、文字が帰ってこないので、まずリクエストタイムアウトになるんでしょうね。
では、そのCGIプロセスは生きたまま永久ループをしているのか、それともタイムアウト
ということでhttpdより強制的にプロセスが殺されるんでしょうか。
今の例は極端な例で「永久ループ」等と書いていますが、もしプロセスが残って、CGIを
実行し続けることができるのなら・・・
たとえばデーモン的な使い方ができるのかなぁ、と、考えております。
利用例としては、随時、掲示板などの文書格納ファイルを監視し、エラーがないか、
不適切な語句の即刻排除、などの「自動監視デーモン」ができちゃうという利用方法と、
数分おきにホームページや掲示板の変更更新差分を、ミラーサーバへ配信しちゃう、
なんていう「ミラーリングデーモン」なんてのが実現するかなと思います。
多分、親プロセスが死んだ時点で子プロセスが生きてるわけないとは思いますが、
実際、httpdではどんな動作をするものなのでしょうか。
サーバがUNIXなら、cronに登録しちゃうのもテだと思いますが、一般プロバイダで
そこまでやらせてくれるところはないと思いますし、無理矢理できたとしても、
nobody/nogroupユーザのcron登録になりそうで、なんか妙な感じになりそうです、よね。
こんにちわ、お久しぶりです。
101,102ですが、ドキュメントルートがA:\\documentrootとなって
しまい、ローカルにアクセスできません。/~userを使ったときです。
「アクセスが許されていない」旨のエラーメッセージが、ANHTTPDから
返されます。
9fでは大丈夫でした。
# ページ更新さぼってるのにリンクしてもらってて恐縮です。
# 近く手を入れます。m(_ _)m
>中田さん
取り敢えず今回はプロバイダの更新をしてそのまま継続することにしましたので、
同じURL,メールアドレスにて、An HTTPdを取り上げさせて頂くことにしました。
ただ、色々とやりたいことがありますので、作業に入れるのは中旬くらいではない
かと思われますが。