はじめまして。
ANHTTPDはいつもCGIのローカルテストで使用させていただいております。
ありがとうございます。
IE5についてのうたみゅさんの投稿がありましたが、
そのとおりにやってもうまくいきませんでした。
Localhostもしくは127.0.0.1といれてもつなぎにいってしまいます。
IE4のときはぜんぜん問題なかったんですが...
「ツール」-「インターネットオプション」-「接続」-「LANの設定」
ここいらへんがくさいと思いますけど、
どうなんでしょうか?
助けてください。
うたみゅさん、
どうもありがとうございます。IE5もローカルテストができる、ということですね。
高橋さん、
htmllint.cgi で「HTML中のリンク先が存在していなかったら警告する(http:のみ)。」 をチェックしたときうまくいかない原因はほぼわかりました。
リンク先を HEADリクエストで調べていますが、そのとき htmllint.cgi自身がHEADリクエストを受けたと誤解して 本体を送らないようです。
もちろんこれは AN HTTPD が悪いので、次のバージョン 1.15 で使えるようにできると思います。
えむけいさん、
304 の件、了解しました。確認して直すようにします。
かもかもさん、
そうですね。クライアントからのアクセスでも起きるのならブラウザが100%になるのは関係ありませんね。
念のため、それが起きる HTMLファイルをメールで送って下さい。
すんません。途中でなぜか投稿になっちゃいました。
で、続きですが。てきとーにいじったら、表示されるようになったのでここにかいておきます。
まず、ツールのインターネットオプションの中の接続欄の一番上の「接続」をクリック。
そしたら「インターネット接続ウィザード」がひらきますんで、LANを使って接続を選ぶ。
そんで次もLANを使って接続を選んで、次に「プロキシサーバの自動検出」を選び、「プロキシサーバの手動設定」のチェックをはずす。
次の「メールアカウントの設定」はよくわからんかったんで、いいえにしときました。
それで「完了」をクリック。
その後でまたインターネットオプションを開いて、「接続」の「LANの設定」を開き、
「設定を自動的に検出する」と「プロキシサーバを使用する」と「ローカルアドレスにはプロキシサーバを使用しない」
をチェックする。
そしたら、僕のHPの画面が写るようになりました。
CGIとかそういうのは、やってないんでまだわかりません。
ネットはじめてまだ2ヶ月なんで、よーわからんのです。
もっと簡単な方法があるかもしれませんが、とりあえずこれで写りました。
ビギナーズラックみたいな感じでできたもんで、あとの細かい事はまた聞きにくるかもしれませんが、
そのときはよろしくおねがいします。
はじめまして。うたみゅとゆいます。
今日ダウンロードさせていただきました。ありがとうございます。
前のログにこーじさんと中田さんがIE5のことを話していましたが、てきとーにいじったら
>304 を返す時は本体は送らないようにしているつもりですが、もれがあるかも。
実はこの実験中にキャッシュが有効で304で応答するときに本体が返っていることに気付きました。
ほかにも、(プロキシではなくてWebサーバとしての機能のほうですが)index.htmlファイルがないディレクトリへHEADした場合(ファイルリストを表示する場合)に本体が返っているようです。
どうも。NTの100%に関するレスありがとうございます。
この問題が生じた際のerrors.logですが、
CGIを使用しないページを表示させた時、起こったものは、それらしいログは残っていない様子です。
CGI/SSIを使用したページを表示させた時に、起こったときは以下のようなログが残ります。
Mon Mar 29 21:25:39 1999 Client Abort 3 (or SOCKET_ERROR) detected during CGI/SSI process
Mon Mar 29 21:25:39 1999 Warning: recv() received 0 bytes in ClientRead() for Thread 1 (ID = 84), nLoop=1
Mon Mar 29 21:27:29 1999 Warning: recv() received 0 bytes in ClientRead() for Thread 2 (ID = 164), nLoop=1
Mon Mar 29 21:27:50 1999 Warning: recv() received 0 bytes in ClientRead() for Thread 1 (ID = 201), nLoop=1
また、サーバマシンはWinNT4.0 Server でPentium133メモリ90MB、もしくはWinNT4.0 Workstation でPentium120メモリ64MB
のものを使用しております。
ブラウザの使用率が100%になるのは確認していませんが、サーバマシンからのアクセスおよびクライアントからのアクセス両方で
この問題が起こることを確認していますので、あまり関係ないような気がします。
といっても、カーネルやリソース等に関する知識が自分にはありませんので、どこで問題が起こっているのか突き止めるのは困難です。
それで、そちらに再現していただく方法を考えてみた末の「リロード連打法」ですが、
それでダメ(再現できない)だとするとちょっと厳しいですね。
また、他の方法をいろいろ試してみようと思います^^;
高橋さん、
いつも最新バージョンで試していただいてどうもありがとうございます。
Client Abort?- については、やってみないとちょっとわからないので確認してみます。
豊田さん、電気三郎さん、
すみません、たしかにそうなってしまっていますので直します。
とりあえずは、/ *.*.*.* (ルートに対してすべてのIPアドレスを許可)を追加すると 1.13 と同じ動作になると思います。
ともっちさん、
これは私はなんともわかりません。
ディスプレイが真っ黒になるというのは遭遇したことがあるような気はするのですが。。。
えむけいさん、
そうですね。
デフォルトや更新ファクターによるキャッシュの有効期限の判定前に If-Modified-Since のチェックをするようにします。
実はテスト中はそうしていたのですが、最終的にちょっと迷いが出て後にしてしまいました。
304 を返す時は本体は送らないようにしているつもりですが、もれがあるかも。
いつもお世話になっています。
1.14についても以前と同様に使えました。
以前からなのですが、html lintを使って、
「HTML中のリンク先が存在していなかったら警告する(http:のみ)。」
というチェックを行うとうまく行きません。
くやしいことにPersonal Web Serverではうまく行ってしまいます。
一つのhttp電文の応答を受ける前にどんどん要求が来るのがまずいのでしょうか?
errors.logには、
Client Abort?- detected during CGI/SSI process
が大量に出ています。
豊田さんと同じ内容でした。すんません。
ANhttpdを愛用させていただいておりますが当方にて以下の事象を確認しました
ので報告させていただきます。
1.14をインストール(1.13からのVerup)しましたが、アクセス制御オプションを
有効にしていると(特定のフォルダに許可IPを設定)許可IPからでもそのフォルダ
のみならず全てのファイルに対してアクセス不能になります。win95とNTserver
で確認済です。設定間違いなど可能性ありましたらご指摘願います。
新しいバージョンに入れ換えたら、
アクセス制御がうまく作動しません。
今まで通りの設定なのに、一つでもアクセス制御をいれると、
すべてにアクセス制御がかかり、許可したIPですら入ることができなくなっていました。
とりあえず、前のバージョンにして動かすことにします
はじめましてm(__)m
先日やっと窓98を自作マシンに載せたので、早速httpdをDLしてインストールしてみたのですが、不可解な現象に困っています(^^;)。
インストールの直後、まだなにもhttpdの設定を弄っていない状態なのに、httpd.exeをWクリックすると、ぶつんとディスプレイが真っ暗になってマシンが止まるんです。通電はしてますが、Ctrl+Alt+Delを何故か2回しないと再起動しません。(いつもは、そんなことないんですが(^^;))。
ICQを常駐させてあったので、そのせいかと外して試してみましたが、結果は同じでした。
スキャンディスクもしてみましたが、異常はありません。
最初、インストールしたフォルダがCドライブではなかったので、万が一を思ってCドライブにインストールし直しましたが、これもダメでした。
唯一、ちょっと気になることは、ビデオカードの発熱が酷くて、長いこと使ってると熱暴走して画面表示が壊れることはありますが、上記のようなブツンといきなり切れるという感じとは違うんです。(画面は乱れてても、システムはちゃんと動いてる)
もうほとほと困り果ててしまいました(;_;)。一体、何がいけないんでしょうか?
どなたか心当たりのあるかた、いらっしゃいましたらお願いですから助けくださいm(__)m
WinNTでの100%に付いて
余談ですが、ずっと以前から気になっていましたので。
CPUのスペックはまず問題ないものを実装しているものと思いますが、メモリの容量などにも
関係しないのでしょうか。どれくらい消費されるものなのかは調べていないので判りませんが
ページングファイルが使われる状態になると当然利用率は急激に上がるでしょう。カーネルに関
して言っていないものと思いますが。
また当然動く際にはハードディスクに頻繁にアクセスしていると思うのでそれにより利用率も
上がるでしょう。
要因の一つとして考えられるものですが様々な要因が利用率の急増に関係しているものと思い
ます。
またいつもWinNTとしか書かれていないので判りませんが3.5xと4.0でも当然カーネルの構造
が違うので変わってくるでしょう。
何処で食われているのかきちんと調べてみれば原因が判るのではないでしょうか。
Heiny-Meederです。
というわけで、次のバージョンで PHPが使えるようにできると思います。> Heiny-Meederさん
期待しています。
PHP3.0はDLしましたので、あとは学習です。
データベースアクセスが出来れば、大体の事が出来るのでじっくり学習する事にします。
それでは。
>キャッシュが期限内の時にのみ If-Modified-Since: (キャッシュファイルの Date) を出す>ようにしています。
>期限切れでもそうすべし、ということでしょうね(?)。
はい。というか期限切れのキャッシュを新鮮にするためにチェックを行なうわけですから。
RFC2068の13.3あたりにもそういう内容のことが書かれていたと思います(HTTP/1.1ですけどRFC1945のほうはキャッシュについてはほとんど書かれていないので)。
あとIf-Modified-SinceはDateからではなくてLast-Modifiedから生成したほうがいいような気がします(RFC2068 13.3.1)。Last-Modifiedがなければ無理にIf-Modified-Sinceは付けなくてもいいようです(RFC2068 13.3)。
それから304で応答するときに本体を返すことは禁止されています(RFC2068 4.3、4.4)。Keep-Aliveなコネクションをサポートしていないのであまり関係ないかもしれませんが、LAN内とか同一マシン内といえども無駄なトラフィックは避けられるなら避けるに越したことはないと思います。
かもかもさんへ追記。
ひょっとすると50スレッド使い果たしているのかもしれませんね。
errors.log にはそれらしいことが何か出ていないでしょうか?
かもかもさん、
うーむ、そうですか。。
まだなんともわかりませんが、私が試した時にはCTRL-R押放しのキーリピートでは、凍りつきに近い状態にはなりましたがブラウザ(Netscape)の方のCPU使用率が100%近くになっていました。
CTRL-Rで送られたリクエストがすべて処理し終われば元に戻るということはないでしょうか?
WindowsNTでAnHTTPDのCPU使用率が100%になってしまう不具合の件です。
早速バージョン1.17でリロード連打の試験を行ってみました。
結果は、以前と同じでパソコンが凍ったような感じになってしまいました。
条件としては、15kbほどのHTMLを表示が追いつかないほどのスピードで
高速リロード連打(もしくはCTRL+R連打)を行いました。
他に、この方法で同じ問題がおこる方がいないとしたら、自分のマシンのほうに問題があるのでしょうか。
どうでしょう。
えむけいさん、
キャッシュが期限内の時にのみ If-Modified-Since: (キャッシュファイルの Date) を出すようにしています。
期限切れでもそうすべし、ということでしょうね(?)。
佐川さん、
おかげさまで、PHPについて調べてみて対応法がほぼ判明しました。
PATH_TRANSLATED に PHPのファイル名をセットして php.exe を起動すればよいようです。
というわけで、次のバージョンで PHPが使えるようにできると思います。> Heiny-Meederさん
オプションの TAB の問題も次のバージョンで。
リンク間違いの訂正です。正しくは以下の通りです。
zip形式の圧縮ファイル
Version 1.0x, 1.1x をお持ちの方は、httpd114d.zip (614,464 bytes)
表のページの方のリンクは今晩修正します。
ブラウザがIf-Modified-Sinceなしで要求した場合、キャッシュが期限切れだとやはりサーバへ全部取得しに行っているように見えます。ダミーの外部プロキシを設定してどのような要求ヘッダが来ているか調べてみたらIf-Modified-Sinceが付いていないのですが、どのように変更したのでしょうか?
telnetで送ったヘッダ
-----------------------------------------------------------
GET http://www2.odn.ne.jp/hiya/cg/jpg/hiyac006.jpg HTTP/1.0
User-Agent: Mozilla/4.5 [ja] (WinNT; I)
Host: www2.odn.ne.jp
-----------------------------------------------------------
An HTTPDが送ったヘッダ
-----------------------------------------------------------
GET http://www2.odn.ne.jp/hiya/cg/jpg/hiyac006.jpg HTTP/1.0
User-Agent: Mozilla/4.5 [ja] (WinNT; I) via proxy gateway AnWeb/1.14
Host: www2.odn.ne.jp
-----------------------------------------------------------
となっていました。
そうですか、プロクシ変数はhttpd側が対応していなかったんですね。
さっそく対応していただけるようでおそれいります。
ところでバージョン1.14へのアップデート用のZIP書庫のURLがhttpd114d.zip
となるべき所をhttpd113d.zipにリンクがされています。確認していただけると幸いです。
それではこれからもどうか頑張ってください。
PHP/FIといえば、最新版はPHP3ですが、
これが、AnHTTPDでは、「入力ファイルが指定されていない」とか何とか出て
うまく動いてくれません。Personal Web Serverならうまく動くのに...(?_?)
一応、PHP3のサイトを書いておきます。
http://jp.php.net/
です。(日本にあるミラーサイト 英語ですが...)
-------------
あと、オプション画面でTABを押した時に移動する場所がめちゃくちゃなので
できれば修正してもらいたいです。
中脇さん、
プロクシ/キャッシュ関係の変数 HTTP_VIA, HTTP_FORWARDED, HTTP_X_FORWARDED_FOR, HTTP_CACHE_CONTROL などについては、AN HTTPD が対応していません。
リクエストヘッダから HTTPサーバが環境変数に入れるようにしないといけないのだと思います。
というわけで、対応するようにしようと思います。
Heiny-Meeder さん、
AN HTTPD 用の PHP/FI はありません。
PHP自体は OpenSource のようですが、まだ調べてみたことはないので、今のところなんともいえませんが、できれば対応させたいと思っています。
こーじさん、
なるほど。判明したら教えてください。
どうも、AN-HTTPDをOCNエコノミー利用のWEBサーバとして、またCGIのチェックなどに
利用させていただいています。
先日ブラウザが吐き出す環境変数を表示させるCGIスクリプトを動かしてみたのですが、
REMOTE_HOST REMOTE_ADDRなどは取得できるんですが、HTTP_VIAなどのプロクシ変数が取得で
きないようです。同じスクリプトをプロバイダのUNIXサーバで走らせるとプロクシ変数は取得
できています。
これはWINDOWSがこの辺の環境変数を取っていないのでしょうか?
NT4WS、WIN95どちらもプロクシ変数を取れていないようです。
Heiny-Meederといいます。
先週から、AnHTTPを使わせてもらっています。
すごいフリーソフトがあるのですね。
現在、Perlで掲示板を動かす所まで出来ました。
次は、データベースアクセスをしようかと考えていますが、
AnHTTPには、Apacheに対するPHP/FIのような位置付けのソフトはありますか?
DatabaseはAccessで、ODBC経由で接続できないかと考えております。
何か情報などありましたら、ご教授願います。
以上、よろしくお願いします。
>中田さん
確かに、ベータ版のときは問題なかったと思います
正式版からです
もう少し、設定見てみますね
接続のチェックはしているようですね
ぴゅあさんありがとうございます。
さっそく試してみます。
こーじさん、
IE5はわかりませんが、IE4の場合、「LANを使用して接続」で、かつ「オンライン」状態(オフライン作業のチェックをはずす)でないとだめでしたね。
オフライン(と同等な状態)になっているということはありませんか?
もしIE5が接続状態を実際に確認するようになっているとだめでしょうけど、ベータ版のときにはそんな話は聞かなかったような気もしますし。。
お久しぶりです。
東京(都内一部?)で停電があったりでWin98の再インスト中にWinが壊れてまたまた再インスト
とかやってて1週間。ついでにNT Serverの掃除&ハード拡張でやっと来られました。
>北川さん
クライアント側から自由にサーバを操作したいということですよね?
いくつかソフトは出ていますが、一番お勧めなのはSymantecのpcANYWHERE32 v8.0ではない
でしょうか。RapLink(だったかな?)というものもありますがちょっと重かったりします。き
ちんと設定すればセキュリティもかなり高いのではないでしょうか?体験版も落とせるので取り
敢えずは試してみては?
初めまして
AN-HTTPDを、自作CGIのテスト用に
いつも使わせていただいています
質問なのですが
IE5の日本語版正式リリースをインストールしたところ
IEから、localhostのCGIを呼び出そうとすると
「そのアドレスは接続していないと表示できない」とのメッセージが出て
インターネットへ接続しないとlocalのアドレスが指定できなくなってしまいました
以前のバージョンのように、「LANを使用して」や「必要なときに接続」
に似たような設定部分をいろいろと見てみましたが
やっぱり駄目でした
この件を解決なされた方はいませんでしょうか?
早速のレスありがとうございます。
サーバ機が手元にないもので、実験できませんので
ちょっと、分かりませんが、ファイルアクセスの可能性も
あると思います。
今度、実験してみます。
話は変わりますが、現在NTでWWWサーバとして、
AnHttpdを利用させていただいているのですが、
サーバ機を手元で、触ることが簡単にできず、
リモート操作をしなければならないのです。
このような場合にHttpdが落ちてしまった場合には、
どのような、プログラム、操作で、Httpdを復旧させる
ことができるでしょうか。
FTPサーバとしても稼動しています。
Telnetdはセキュリティのことを考えると恐ろしくて
動かしていません。
あまり、関係のないは無しで申し訳ありませんが、
もし、同じ環境の方がおられましたら、どのようにされて
いるか参考までにお聞かせ下さい。
北川さん、
アドレス違反の方は、CGI/SSIなどのファイルアクセスの競合とは違う様子でしょうか?
かもかもさん、
今のところ再現ができませんが、次のバージョンでは関係しそうなところに手を入れてみます。
それでまた様子をみてもらうということになりそうなのでよろしく。
中田君へ
> 1.0x 以前の AN HTTPD をインストールしたとすると 英語表記であ
> ることがレジストリに保存されています。そうだとしたら、
> Options/Appearance で Language を Japanese にすれば日本語表
> 記になります。
Language/English を Offにして日本語表記になりました。
おひさしぶりです。
私のところでも、NT4.0+SP4.0でCPU300MHz,メモリ64ですが、
CPU負荷率が100%となりました。プロクシはON、キャッシュはOFFです。
また、細かな条件は不明ですが、サーバとプロクシクライアントの
マシンで同時に、ホームページを見ているとアドレス違反で落ちて
しまいます。クライアントも同じスペックです。
あまり、マシンのスペックとは関係がない様に思えます。
では
中田さん。早速のレスありがとうございます。
NTでAN HTTPDの負荷率が100%になってりまう件ですが、
自分のマシン環境(Pentium133)の場合、25KbyteほどのHTMLテキスト(画像なし)で
リロード間隔を1秒以下でひたすら連打していると、急に起こります。
少ないときは5回ほどの連打で、また数十回ほど連打すると確実に凍ります^^;
とりあえず、Pentium120と133の2台のマシンで再現性があることを確認しましたが、
それよりも高速のマシンでは試していません。
自分が試した感覚では、あまりHTML文章の種類によらず問題が発生するような気がしますが、どうでしょう。
マシンのスペックが低すぎるからなのでしょうか?
そちらでも再現できると嬉しいです。
久貝へ、
1.0x 以前の AN HTTPD をインストールしたとすると 英語表記であることがレジストリに保存されています。
そうだとしたら、Options/Appearance で Language を Japanese にすれば日本語表記になります。
もしそれでJapanese が選択できないようだと日本語Windowsの検出がうまくいっていないということになりますが。。。
負荷100%になるおそれはありますが、もしなったら、その時の状況を知らせてください。対策のてがかりにしたいので。
豊田さん、
なるほど。空白(スペース)の問題でしたか。
Windowsでは、たとえばショートカットのリンク先は空白を含むパスは " " でくくられます。
ファイル名を指定して実行 でも、参照で Program Files 以下のファイルを指定すると自動的に " " がつきます。
コマンドプロンプトでも、一部の例外(cdなど)をのぞき、空白を含むパスは、" " でくくらないとうまく動作しません。
というわけで、Windowsでは、空白を含むパスについてはちょっと扱いが面倒になります。
AN HTTPD の指定でも、Program Files などを使う場合、
[C:\Program Files\Perl\bin\perl.exe ]
ではだめで、
["C:\Program Files\Perl\bin\perl.exe" ]
とすればうまくいくと思います。
あるいは、
[C:\PROGRA~1\Perl\bin\perl.exe ]
でしょう。
ドキュメントルートおよびそれ以下も空白を含むパス(フォルダ名)は避けた方がよいです。
特に CGI/SSI はコマンドプロンプト上と同じように動くので、" " の中にない空白は引数の区切りとみなされます。
かもかもさん、
こちらで再現できれば対策がたてやすいので、どの程度の大きさのHTMLでどのくらいの間隔でリロードを繰り返すと起きやすいかをぜひお知らせ下さい。
> WindowsNTをブートしたらいつでもサービスとして機能させるため
> には、どうしたらいいのでしょうか?
自己レスです。
一度チェックすれば、そのあとサービスで機能することがわかりました。
でも、下のかもかもさんのコメントが気になってきました。(-_-;)
デバッグを急かすつもりはありません。
あと、Win98では、オプションなどのメニューが英語ですが、NTでは日本語になっているのは
もともとそうなんでしょうか? Win98での設定がまずいのでしょうか?
どうも。。
久貝です。
また、お世話になります。
httpdは、WindowsNT4.0(SP4)でサービスとしても動作するようですね。
オプション/一般のサービスで、チェックボックスをONにすればいいようですが、
WindowsNTをブートしたらいつでもサービスとして機能させるためには、どうしたら
いいのでしょうか?
NTの知識に関する質問かもしれませんが。。
中田ありがとうございます。原因がわかりました。
perlの場所はフルパスで指定してあり、Program Filesのなかにあったのですが、
ここだとAN HTTPからだと動かないのです。
場所をうつして、パスを変更したら、動きました。
もしかして、パスを書くときスペース入りのパスだとダメなのかもしれません。
これってバグなのでしょうか?
と言うわけで、今はうまく動いています。
どうも、はじめまして。AN Httpdありがたく使わせて頂いております。
他の方も以前報告されているようですが、自分もNTの負荷率100%に悩まされております。
動作環境は、NT Server4.0 + SP4で、AN Httpdをサービスで起動して、プロクシ機能は
使用しておりません。症状は数日後に負荷率が100%になっていてサービスを再起動しないと直らない
といった具合です。
そこで、どういった状況でこの問題が生じるか、あれこれ試してみた結果、ブラウザのリロード
ボタンを、ある間隔で連打すると急にマシンが応答しなくなるといった症状が確認できました。
表示させるHTMLページはcgiやssiの使用の有無に関わらず、ある程度ファイルサイズが大きめの
HTML文章で起こりやすいようです。NT Workstation+SP3でも同様で、再現性もあります。
大変扱いやすいWebサーバでとても気に入っていますので、どうか対策のほどよろしくお願いいたします。
かすいさん、
中田さん
本当にありがとうございました。
CGIスクリプト自体がほとんどわかって無いのですが、いろいろいじくってみます。
また何かあったらご迷惑をおかけすると思いますがそのときはよろしくお願いします。m(__)m
いろいろお騒がせしていますが……またです。(汗)
≫いろいろ試してみた結果、どうも一部の perl/jperl では、あのソートは効かないみたいです。
うーん、追試していたら、どの perl/jperl でも動くようになりました。
というか、%DATAでなく、%dataにデータを入れてました。(^^;;
で、あの2つの perl/jperl だと無操作になるのですが、それ以外だと、
1つだけローテイトされるみたいで、それを、てっきり、ソートされた
ものと思っていました……。(ぉぃ
中田さん>
なるほど。>ISAPI
minibbs.cgiは、せみ丸さんが、7.91をお使いとのことですので、
入手可能な7.93で試しました。
boodooさん>
またまた補足。(^^;;
いろいろ試してみた結果、どうも一部の perl/jperl では、あのソートは効かないみたいです。
うちにある、perl/jperlのうち「This is jperl, version 4.036 + 1.4 Oct 31 1993」
と「ActivePerl」ではソートされませんでした。他の3つの perl/jperlではソート
されました。
ちなみに、いつも前者がうちのテスト環境というわけでもありました……。
boodoo さん、
そうですね。いずれにしろそこで止まるということはないと思うのですが、メールいただければ確認してみます。
perlfunc.htmlには、
# this sorts the %age associative arrays by value
# instead of key using an inline function
@eldest = sort { $age{$b} <=> $age{$a} } keys %age;
という例は載っていました。
問題は @age = keys %age; でいいかどうかということだったのでしょうけど。>かすいさん
豊田さん、
.pl, .cgi の実行プログラムのところを C:\Perl\bin\jperl.exe などとフルパスで指定してください。
NTでは "cmd.exe /c jperl ..." という起動をするので、cmd.exe の起動自体は正常にできるので、このようなエラーになります。
command.com でいう「コマンドまたはファイル名が違います」というのと同じエラーで、つまり、jperl が見つからないということです。
なお、jcode.pl などを使うのでしたら、jperl.exe ではなく perl.exe をお使いになる方がよいと思います。
せみ丸さん、
いやあ、動いてよかったです。
確かに、PerlIS.dll がインストールしてなくて、
[ ] 拡張子.dll を ISAPI で実行
[v] .pl, .cgi を PerlIS で実行
だと、「データなし」になってエラーメッセージが出ませんね。
この組み合わせだけは都合が悪いようなのでプログラム側も修正しておきます。
一応、PerlIS.dll がない場合は、
[v] 拡張子.dll を ISAPI で実行
[ ] .pl, .cgi を PerlIS で実行
がお勧めです。
PWS付属の counter.dll などの ISAPIのDLLを実行できるようにするためです。PerlIS.dll もその一種ですが。
かすいさん、
現在の AN HTTPD の仕様は、以下のようにしたつもりでいます。
ISAPIを使う場合、
最初の出力が "HTTP/1...." でない限り、まず "HTTP/1.0 200 OK\n" を出力します。
"Set-Cookie:" でも "Location:" でも "HTTP/1.0 200 OK\n" を出してそのあとはそのまま出力します。
したがって、PerlIS.dll の場合、302 を出してやる必要があります。
Perl.exe の場合は、
"Set-Cookie:" の有無にかかわらず "Location:" があれば、200 でなく 302 を返すようにします。
ということなのですが、どこか意図通りになっていないのかもしれません。
改造例は、MiniBBS(?) のどのバージョンでしょうか?
いさぎ悪く、補足。(^^;;
≫また、$、@、%、* (以下略)
≫また、$#、@、%、* (以下略)
のつもりでした。これじゃ、おかしすぎる。(^^;;
ごめんなさい……どうも、おばかなので、早速、訂正です。(ぉぃ
≫とも同義です。@data= %data; またはその逆も同じとなります。
@data= %data; は可能ですが、%data= @data; は不可能でした。
≫また、$、@、%、*の違いは参照方法が違うだけであり、名前が同じ限り、
≫それらが値を返してくる際に参照しているデータは同じものですから……。
これも「ウソ」ですね。(汗) これっと、今までずっと勘違いしてたような。
$_、@_なんかは確かに独立してますしね……「*」は別ですが。
--------
ということは、@data= keys %data; な常態にあるわけですよね?
なるほど、なるほど……。
@data= keys %data;
@data= sort {$data{$b}<=>$data{$a};} @data;
すると、これは正常に動作しますね……ごめんなさい。(^^;;
boodooさん>
≫@data = sort { $DATA{$b} <=> $DATA{$a}; } @data; は、
≫連想配列のvalue値でソートしていると言うことです
それなら、その方法で、おしゃっている処理結果を得るのは無理なはずです。(^^;;
連想配列は、格納順序を保証もしなければ、保持するような仕組みにすら
なっていないはずですから、ソートはできませんし、ソートできたとしても、
参照する際に結果がソートされている保証はありません。
だから、おしゃっているような処理を実現するには普通の配列を用いたり
して工夫するしかありません。"$value $key"という文字列の配列を作って、
ソートして分割するとか、多次元配列で工夫するとか……といったところ
でしょうか。
というわけで、本当にあの方法で「連想配列」がソートできているか、
よく確認して見てください。
加えて、例えば、
$data{'x'}= '2';
$data{'y'}= '3';
$data{'z'}= '1';
としていたとすれば、連想配列の持つデータは下の代入操作と同義になり、
%data = ('x', 2, 'y', 3, 'z', 1);
更に、
@data = ('x', 2, 'y', 3, 'z', 1);
とも同義です。@data= %data; またはその逆も同じとなります。
(但し、格納順序は一意とは限りません)
それゆえに、連想配列または連想配列の入った配列をソート対象とすると、
keyもvalueも混在した配列をソート対象としてしまうことになるので、
大丈夫なのかな?と思ったのです。(^^;;
また、keys、valuesにしても、同じです。keysまたはvaluesの返す、key
またはvalueの集合がソート対象となってしまい、連想配列の格納順序は
ソート対象にはなりません。評価(のサブルーチン)はあくまで評価です
から、ソート対象ではありませんので。(^^;;
≫>配列ではなく連想配列になるのですが
≫配列は [ 連想配列は { でしょう。
参照方法はそうですが……連想配列も、配列とみなして、{}以外にも[]の
インデックスでも参照可能です。連想配列はデータ的には、keyとvalueの
ペアの並ぶ配列にすぎませんから。(^^;;
また、$、@、%、*の違いは参照方法が違うだけであり、名前が同じ限り、
それらが値を返してくる際に参照しているデータは同じものですから……。
CGIが実行されないエラーのことですが、見にくいですけど、そのままコピーします。
−ここから−
CGI エラー - Content-Type ヘッダがみつかりません。
CGI 出力メッセージ:
指定した名前は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されません
−ここまで−
かすいさんへ
@data = sort { $DATA{$b} <=> $DATA{$a}; } @data; は、
連想配列のvalue値でソートしていると言うことです
後ろの、@data を、keys %DATA としたかったのですが、混乱しないようにと思いまして。
>配列ではなく連想配列になるのですが
配列は [ 連想配列は { でしょう。
田中さんへ
PerlIS 入れていません。
もうちょっとテストしてからだめでしたらメールさせていただきます
中田さん>
うーん、Locationが後から出てくると行方不明になっちゃうみたいですね。(^^;;
【無改造の場合】
Set-Cookie: http://localhost/minibbs.cgi=name:かすい,email:; expires=Wednesday, 21-Apr-99 13:49:21 GMT
HTTP/1.0 200 Content-{Type: Encoding: Leng:0}Server:AnWeb/1.12
【入れ替えた場合】
Location: http://localhost/minibbs.cgi?
Set-Cookie: http://localhost/minibbs.cgi=name:かすい,email:; expires=Wednesday, 21-Apr-99 13:51:11 GMT
HTTP/1.0 302 Content-{Type: Encoding: Leng:0} Server:AnWeb/1.12
# 今に始まったことではありませんが、それにしても、MiniBBSの Cookie書き出し処理って
いろいろとまずいような……。
せみ丸さん>
動きましたか。よかったですね。(^^)
≫で、最後の2行のところで、両方チェックを外すのと、ISAPIで実行のみにチェックするのと、
≫どちらで使うのがいいんでしょう?
これは、普通にお使いになる分には、どちらでもかまいません。
というか、普通にお使いになる範囲では設定しても、しなくても意味がありません。(^^;;
皆様ありがとうございます。
拡張子.dll を ISAPI で実行 にチェックを変えたら動きました。
PerlIS.dllで実行を外しても動きました。
でもPerlIS.dllで実行をチェックするとやっぱりダメでしたが・・・
一番の問題は・・・はずかしい
Perlへのパスのミスタイプ・・・
Parlになってました。(^^;
かすいさん>
「C:\httpd113」です。ここに書き込むとき抜けました。
上の通りで動いてしまいました。
いろいろコメントいただきましてありがとうございました。
自分の間違えからご迷惑をおかけしました。
申し訳有りませんでした。m(__)m
中脇さん>
コメントありがとうございます。
上の通りで自分のミスでした。
パスを直したら外したら動きました。
PerlIS.dllで実行を外しても動きました。
ファイル検索したところPerlIS.DLLは見つかりませんでした。
インストールされてなかったんですね。
ありがとうございました。m(__)m
中田さん>
いろいろありがとうございました。
perlのスペル間違いが原因でした。
PerlIS.DLLもインストールされてませんでしたが・・
本当に申し訳有りませんでした。m(__)m
よく見ないとダメですね。
で、最後の2行のところで、両方チェックを外すのと、ISAPIで実行のみにチェックするのと、
どちらで使うのがいいんでしょう?
皆さんには本当にに申し訳有りませんでした。。
恥ずかしいし・・・(^^;
≫Location:, Set-Cookie: の順に出すとOKということでしょうか?
はい、minibbs.cgiを改造して、そういう順序にしたら動きました。
そうすると、現行版では Locationヘッダの有無判定を先頭行に対してしか
行っていないとか、Set-Cookieのようなヘッダが出てくると以降を見ない
とか、そういうことでしょうか?……で、302ではなく、200な応答をブラウザは
受け取っているものだから、ふつうでないデータを受け取ったと思い込んだ
ブラウザはさわぎだしてしまうと。(^^;;
輝峰さんへ追記。
CGIのための実践入門Perl追補版も眼を通されるとよいでしょう。 付録 CD-ROM 中の(cgi-lib.plその他の)不具合などが書いてあります。
輝峰さん、
どうぞ AN HTTPD をお使い下さい。
かすいさん、
PerlIS で Location: の場合は "HTTP/1.0 302 Found\n" をまず出す必要があるというのはわかっています。
Location:, Set-Cookie: の順に出すとOKということでしょうか? だとしたらちょっと考えてみます。
なお、次のバージョン1.14は少々手間取っていまして、来週になります。
せみ丸さん、
不思議ですね。NTでしたっけ?
次の2つはチェックなしですね(?)。
[ ] #! の行を調べる [ ] EXE形式のcgiを実行する
最後の2行(ISAPI)は、以下の通りにしてください。
[v] 拡張子.dll を ISAPI で実行
[ ] .pl, .cgi を PerlIS で実行
ちょっと戻ると、.pl,.cgi の実行プログラムの
[C:\Perl\bin\Perl.exe ]
は、
[C:\Perl\bin\Perl.exe ]
ですよね(?)。
ドキュメントルートは [C:\httpd113 ] でないとたぶん設定できないと思います。
あとは、
test.cgi が C:\httpd113\public_html においてあって、
URLを http://127.0.0.1/~sanopee/test.cgi としているかどうか、くらいですが。
(追記4(ぉぃ )
あ、ちょっと不適切でした。
「書込めない」ではなく「結果が表示されない」でした。
さっきのを書込む前に確認していたんですが、書いてるうちに忘れてました。(^^;;
(追記3(^^;; )中田さんおよび分かる方へ>
MiniBBSが、PerlISで書込めないのは、投稿時のヘッダが、Set-Cookie、Locationの
順になってるのが悪いみたいですね。入れ替えると動きました。これ、周知なのかな?(^^;;
cgi-perlを勉強始めました。
たまたま買った本が
三島俊司
技術評論社
cgiのためのPerl(実践入門)
ISBN4-7741-0629
\2880
1999.1.26 本厚木駅本屋にて購入。
MS IIS(PWS)が、今 WindowsNT用で
Windows95 用では無いことが判明。
トホホ
54歳
会社員
男性
private:
************************************************************
E-MAIL : ikudo-u@ra2.so-net.ne.jp ; kihou@anet.ne.jp
HBA02214@nifty.ne.jp
URL : http://www02.so-net.ne.jp/~ikudo-u/
************************************************************
>せみ丸さん
ー無効な認識されない応答を返しましたーはPerlIS.DLLがインストールされていない環境で
PerlISを使おうとしたりPerlIS.DLLでサポートされていない関数を使ったCGIを走らせた時に
でます。
PerlISを使うのチェックを外してperl.exeを使ってみたらどうなります?
あとDOSコンソールから、perl c:\test.cgi などと打ってみてhttpdを通さずにPerlを実行す
ればどうなりますか??
(追記2)
うーん、jcode.plを用意して、data.cgiを作って、$reloadの設定を変えただけですが、
素直に動作しました。
が、書込みはできないですね。このことでしょうか?>せみ丸さん
(これまで、何にも表示されてないことを前提にお話ししていたのですけど)
そういうことであれば、やはり、PerlISを切るしかないと思います。
あるいは、PerlISでも動くものを探すかです。(^^;;
(追記)
minibbs、7.91ではありませんが、7.93なら、今も公開されてますね。
よく見てませんでした……。(^^;;
boodooさん>
うちも、今は 1.12ですし、試してみましたが、止まるようなことはないようです。(^^;;
foreach や sort は、多用していますが、今のところ問題ないですし……。
ただ……perl.exeで動いて、PerlISで動かないなんていうのもありうるので、もし、
PerlISでお使いなら、パフォーマンスは落ちますが、PerlISを切って試されては
いかがでしょうか。
あと、いわゆる、jperlでは動くけど、perlでは動かない、あるいはその逆とか。
それから、余計なことかもしれませんが……
@data = sort { $DATA{$b} <=> $DATA{$a}; } @data;
というのは、
# 数列としての逆順ソート
@data = sort { $b <=> $a; } @data;
の誤りでしょうか?? 違ったら、ごめんなさい。
ただ、perlでは、名前の、大文字と小文字は区別されませんので……$name{index}
というのは配列ではなく連想配列になるのですが、もちろん、連想配列は2つの要素の
組の配列という意味で、ふつうの配列と互換はしますが、整列対象も同じ名前の配列の
ようなので……?と思ったのです。
ちなみに、辞書順逆ソートなら、単に下のように書くだけでだいじょうぶです。
@data = reverse sort @data;
せみ丸さん>
うーん……minibbsのv7.91ですか。今は公開されてないみたいですね。
(おばかなので、最初 www.rescure.co.jpについないだら違うとこが表示されました(^^;; )
そもそも、minibbsについては、ここでも Windowsで動かすにあたって、既に多くの
書込みがあっているのですが……。
ただ、その前に、あの中田さんのいっていたものも、動かないとなると……。(^^;;
でも、いちおう、PerlISの項目のチェックを外して試してもらえます?
すると、今度こそ何かエラーメッセージが出る(か、動く)ような気がしますが……。
それと、
≫ドキュメントルート C:httpd113
というのは書込む際のタイプミスですよね?「C:\httpd113」でないと、ふつう
即エラーになると思いますので……。
satoさん>
httpd093.exeは、だいぶ古いバージョンです。(^^;;
http://www.st.rim.or.jp/~nakata/ から、httpd113.exeを入手してください。
( 今日、新しいのが公開されれば、114になってるかもしれませんが…… )
今日は 質問です
ローカルサーバでCGIのhttpd093.exeファイルのダウンロードは何処にあるのでしょうか
32i310.exeはダウンロードさせていただきました。
中田さん>
ダイヤルアップはしなくなりました。
ありがとうございました。
設定ですが、
HTTPサーバ機能にチェック
バーチャルホストなし
ドキュメントルート C:httpd113
ポート:80
デフォルトインデックス:index.html
/~sanopeeにチェック
ドキュメントルート public_html
リモートホスト 取得しないにチェック
SSIを許可するにチェック
/index.htmlにチェック
*.shtmlにチェック
*.htmlなし(しても変わりませんでした)
.pl,.cgiの実行プログラム:C:\Perl\bin\Perl.exe
CGI/SSIプロセス制御:単一スレッドなし ヘルパープロセスなし
CGI出力を検査にチェック SSI出力を検査なし
.pl,.cgiをPerlIs.dllで実行にチェック
です。
編集はメモ帳またはワードパッドでしています。
boodoo さん、
それぞれのところでCGIが終了する、ということでしょうか?
PerlIS だと デフォルトでは20秒でタイムアウトします。
いくつか print させてみないとちょっとわかりません。
たとえば、"Content-type: text/html\n\n" とかは print済みとして、foreach ループの中で$line を print するとどうなりますか?
どうしてもおかしいようでしたら、一式メールで送ってください。確認してみます。
せみ丸さん、
CGI実行時にダイヤルアップするのは、「リモートホストを取得」のところを「取得しない」にすれば大丈夫です。
CGIの方は、
あの簡単なCGIでそうなるのでしたらどのCGIでもだめでしょう。
ちゃんと CGI Test が表示されるようにすることを優先した方がいいと思います。
でも、原因がわかりませんね。
オプションの「CGI出力を検査」のところにチェックが入っていることを再確認してください。
また、念のためオプション/一般の設定内容を すべて お知らせ願えませんか?
あと関係しないとは思いますが、CGIのファイルの作成/編集は何を使っていますか?
訂正
@data = sort { $DATA{$b} <=> $DATA{$a$} } @data
↓
@data = sort { $DATA{$b} <=> $DATA{$a} } @data
でした。
httpd のバージョンは 1.12 です
よろしくお願いします
初めて質問します
エーと、perlで投票用のCGIを組んでいるんですが
プログラム中に sort や keys を使うとそこで処理が止まって
それ以降何も表示されなくなりました。
具体的には
foreach $line(keys(%lines)){ ←この部分
}
や、
@data = sort { $DATA{$b} <=> $DATA{$a$} } @data
の様にすると、その部分で出力をやめてしまっています。
で、仮に、test.cgiとして
perl.exe と、Ms-Dosで、
>perl test.cgi とすればちゃんと出力されていますし、
>perl -c test.cgi でも、エラーはなかったです
httpdを通すと表示されない見たいなんですが・・・
かすいさん>
ありがとうございます。
いま使ってるスクリプトはminibbsのv7.91を基本にちょっといじってます。
今度使おうとしてるのはKENTさんのところのcomboardです。
comboardは何もいじってないので、まだminibbsでしか確認してません。
あと、スタートアップチェックを外したらhttpdの立ち上げの時は外線につながらなくなりました。
が、ブラウザでURLを実行しようとすると外線につながっちゃいます。
これはしょうがないのかな?ケーブルを外すしか無いのかな?
中田さん>
ありがとうございます。
この2行を、たとえばtest.cgiとして保存して実行すればいいんですよね。
同じでした。
ドキュメントに・・・
ブラウザはネコミの4.5です。
IEは3何ですけど、無効または認識されない応答をサーバが返しました。というメッセージが出ました。
よろしくお願いします。
せみ丸さん、
CGIの方ですが、
print "Content-type: text/html\n\n";
print "CGI Test\n";
という簡単なものを実行するとどうなりますか?
また、ブラウザとそのバージョンは何でしょうか?
中田さんへ>
ごめんなさい……リムネットのキャッシュサーバがタイムアウトばかり返してくる
ものだから再読み込みしてるうちに、多重投稿してしまいました。
重複分は削除していただけないでしょうか……。
リムネットの場合、特に気を付けるようにしてるんですが、うっかりしてました。
せみ丸さん>
この場合、特にエラーメッセージが記録されるようなことはないと思います。
また、公開されている CGI スクリプトは、単純なものや特に断りのない限りは
Windowsでは、そのままだと動かないかもしれないと思ってかかった方が懸命です。
だから、CGI の設定ではなく、CGI 自体の問題と思います。
( かといって、その CGI の作者さんが悪いわけではないのですが…… )
というわけで、どちらで入手されたものか、提示していただけませんか?
でないと、何にも分かりませんし、先に進めません……公開されている CGI は、
たくさんありますから。(^^;;
あと、ダイヤルアップの件は……とりあえず、オプションの「表示/インデックス」の
ところの、スタートアップの枠の「ホスト名/アドレスを取得」のチェックをはずして
みてください。
かすいさん、中田さん>
早速のコメントありがとうございます。
CGIの出力をチェックするにはチェックしてあります。
この状態で「ドキュメントにデータが含まれていません。・・・」のメッセージが出るのです。
どこかのファイルにエラーメッセージが残るんですか?
この状態だとスクリプトのエラーになるんでしょうか?
datファイルやplファイルはCGIと同じフォルダに置いてあり、スクリプト中のの注意書きの通り、
パスの指定もしています。
他の命令のせいなのでしょうか?
うぅ難しい・・・
ちなみにフリーの掲示板のスクリプトを使用しています。
いろいろスクリプトを落としてみてまた試してみます。
もう一つ質問させて下さい。
うちの環境はISDNでダイヤルUPルータを使用してインターネットにつないでいます。
通常ブラウザを立ち上げたとき自動的にプロバイダにつなぐのですが、
httpdを立ち上げたときも自動でつないでしまいます。
これをやめさせるためにはルータの設定になるのでしょうか?httpd上で設定できるのでしょうか?
よろしくお願いします。
harunaさん>
うーん……ちょうど、オプションのダイアログを開いたところの中段あたりに
「#!の行を調べる」というチェック項目があると思うのですがそこがチェック
されてないでしょうか?チェックを外して試してめください。
たぶん、それだと思います。(^^;;
はじめまして harunaと申します。
CGIの勉強をはじめた超初心者ですが。
CGIをローカルで動作させたくてANhttpdをインストールさせていただきました。
perlもインストールしたんですが、 下記エラーから先に進めません。
どうしたらいいのか教えていただけませんか、よろしくお願いします。
Error 500
CGI エラー - Content-Type ヘッダがみつかりません。
CGI 出力メッセージ:
コマンドまたはファイル名が違います.
せみ丸さん、
かすいさんが言われるように、「CGI出力を検査」にチェックをいれる、のが早道でしょう。
でてきたメッセージの内容が不明であればその内容を言ってもらえれば。
おちゃさん、
YAMAHA のルータでしたか。。確かに YAMAHA に聞くのが一番ですね。
もちろん AN HTTPD は関係ないのですが、ダイヤルアップルータでは使えないと思われてしまうと残念なので、「設定すればできます」と答えています。
私自身はダイヤルアップルータを使っていないので具体的にはわかっていません。おちゃさんがうまくいったらその設定内容を(どこかで)公開してくださるとありがたいです。
kuri さん、
ブラウザの方を プロクシ(プロキシ)を使う接続にして プロクシサーバのIPアドレスとポートを指定しておきます。
ただし、HTTPとFTPしか受けつけません。
AN HTTPD の プロクシの設定は、プロクシサーバ機能, http, ftp にチェックを入れるだけです。
キャッシュは、キャッシュオンにチェックを入れてみてください。プロクシを経由するドキュメントをキャッシュ(一時保存)します。
# Proxy のカナ表記は 「プロキシ」の方が多いですね。発音は「プロクシ」の方が近いと思うのですが。
せみ丸さん>
そのエラーの場合、おそらく、perl.exeおよび設定は、だいじょうぶと
思います。また、おおよその問題は CGI スクリプト側にあると思います。
そして、その大まかな原因は、CGI の結果が、何も出力されていなかったり、
正しく出力されてなかったり、ヘッダだけしか出力されてないかです。
それには、設定ミスから、コーディングミス(というより処理手順の誤り)
によるもの、環境依存性(Unix系にはあって、Windowsにない機能を使っ
ている場合など)等々が考えられます。(^^;;
また、もし、オプションの設定で「CGI出力を検査」をチェックされて
なければコンパイルエラーも考えられます。その CGI の文法ミス等で、
コンパイル(端折ってしまえば、実行のための前準備)段階で perl.exe
が、CGI スクリプトを理解できなくて、実行に入る前の段階で処理を終
えた場合です。
上に書いてあることが、よくお分かりでなければ……とりあえず、その
オプションの設定を開いたところの下の方にある「CGI出力を検査」の
項目をチェックしていただいて、そして、その CGI の場所をブラウザで
開いてみた場合の結果(エラーメッセージ)を、提示していただけないで
しょうか。それによって更に1歩進めると思います。(^^)
そして、逆に、チェックされている上での場合は、とりあえず、その
CGI スクリプトは、少なくとも実行はされています。
環境依存の問題か、処理手順の問題ではないでしょうか……これも、更に
色々な原因が考えられるわけですが。(^^;;
--------
あるいは、別の確認手順として、「MS-DOS プロンプト」を開いて、
(例) perl c:\httpd\test.cgi 等と打って、リターンキーを押せば実行
されると思いますので、ちゃんと出力されているか確認してみてください。
わけのわからないようなメッセージが表示されたら、おそらくコンパイル
エラー、何も表示されなかったり、「Content-Type」程度しか表示され
なかったりすれば、処理手順や環境依存などの問題ではないかと思います。
ただ、CGI スクリプトによっては、プロンプトからはうまく動かせない
ものもありますけれど……。(^^;;
中田さんコメントありがとうございます。
HTTPのPROXYと同じ感覚で使えばいいのですね(^^)
PostPetでちょっとわからなかったもので…)
>ぴゅあさん
いろいろありがとうございます<(__)>。考えてみればルータの販売元の「YAMAHA」に
聞いてみれば良かったです(汗)。「an Httpd」には何の責任も無いのですし。
> ただ、よく見かける知ったかぶりで威張りまくっている(知らない人をこばかにしている
)人は頂けませんね。
ぎく(汗)。威張ったことはないですが、つい先日某掲示板で「Xenonがどうのこうの」と
書いて、解る人には話題にのって貰えましたが、解らない人には知ったかぶってると言われ
ちゃいました。恰好つけたわけではないんですけど。
初めまして。せみ丸と申します。
CGIをローカルで動作させたくてANhttpdをインストールさせていただきました。
perlもインストールしたんですが、
「ドキュメントにデータが含まれていません。後でやり直すか・・・」
というエラーが出てしまいます。
通常のHTMLは開けるんですが・・・
DOS/V機なのでcにperlをそのまま解凍しています。
httpdの設定で c:\Perl\bin\Perl.exe と設定しています。
Perl.exeはちゃんとこのフォルダにあります。
ローカルサーバには接続されているように思います。
どんなことが考えられるでしょうか?
お教えいただきたくよろしくお願いします。
中田さんこんにちは
バージョンアップさしてもらいました
ところで私もR_Oさんとよく似た質問ですが
私はオプションのProxy,Cacheのとこの設定はよくわからずに手つかずです
付属のhtmlを参照しましたがいまいちピンときません
よろしければご指導のほど・・・・
TOPPY さん、
ぴゅあさんの言われる通りで、とりあえずは 「.pl, .cgi の実行プログラム」を単に "perl" ではなく、フルパスで "C:\Perl\bin\perl.exe" などと指定すれば動くと思います。
Perl をインストール後 Windowsを再起動してperlへの PATH が有効になっていれば "perl" のままでも大丈夫だと思いますが。
なお、D:\xxx\xxx の存在を確認して(Error 404 ではないことを確認して)から Error 500 になります。>ぴゅあさん
R_O さん、
(1)AN HTTPD の SMTP,POP3サーバのところにメーラで指定しているサーバを指定
(2)メーラのサーバ指定のところに AN HTTPDが動作しているPCのIPアドレス(ホスト名)を指定
そうすると、AN HTTPD のゲートウェイ経由でメールのやりとりができます。
無加工で中継するだけなので「プロクシ」でなく「ゲートウェイ」としましたが、この使い分けはあまり適当ではなかったかもしれません。
あぅ
手抜きして、前回投稿のフォームをそのまま使ったので、要らない部分を消し忘れてしま
いました(T_T)。
下の方の「は走っているのが(のレベルに合わせて)」以降は無視してください。m(__)m
>おちゃ ひできさん
専門用語に関してはコンピュータ辞典などを買ってくるのが良いのかもしれませんが、簡
単な説明ですが下記のようなサイトを見てみるとどうでしょう。
http://www.netlaputa.ne.jp/~sskt921/frameie.html
たまたま、(下らない内容ですが)略称の正式名称を調べるのに使ったくらいですが。
σ(^ー^)もこの世界に入って25年以上経ちますけど(歳バレバレ(自爆))、まだまだ解ら
ない言葉は多くあります。別に言葉を覚える必要は試験を対象とする以外全く必要はないと
思っているんですけどね。ただ、人に説明するときされるとき、相談を受けるときするとき
にはどういうものであるか予想できるくらいできるのが良いと思いますけど。
ただ、よく見かける知ったかぶりで威張りまくっている(知らない人をこばかにしている
)人は頂けませんね。本当に理解できる(知識をもっていると言える)人は、その相手に対
して(専門用語を並べるだけでなく)その相手のレベルに合わせて日常に近い言葉で解りや
すく説明できることでしょう。これはかなり難しいことですが、これができる人は本当に尊
敬します。
σ(^ー^)もまだまだ知らない言葉も多くあります。やっと時間が出来始めたので、σ(^ー^)
が判らない言葉を中心に辞典を作ろう(作らなきゃ)と考えています(同時知識募集中/σ(^ー^)
自身間違った解釈もする筈ですし)。特にMSは新しい言葉を作ってくれるので難解で苦労し
ます。そうしないと新しい実装に対して説明がつかなくなるからなのかもしれませんが。た
だMSの場合は他とは違う言葉を使うことによって「独占」という意識を強くもっているよう
な気がしてしまうのですが、それはσ(^ー^)だけでしょうか。
ちょっと、話の内容が外れまくって&だらだらと長くて失礼しました〜♪m(__)m
は走っているのが(のレベルに合わせて)
レスをしている限りはきちんと確認しなくてはと確認しておきました。<Perl.exeのパス指定
確かにPerl.exeだけで問題ありませんね。
ということは、ここをフルパスにしてうまく動いている人はPerlのインストール後リブート
しなければならない(別にしなくてもPerl.exe自身を使うには支障はありませんが)とい
うことを忘れているのかもしれませんね。
>というわけでTOPPYさん
前述の件に心当たりはありませんか?
或いは'D:\xxxx\xxxx'に当たるCGIソースコードファイルが見つからないのではないでし
ょうか。たぶんHTML文書ファイル等(つまりAN HTTP Serverが無加工のままブラウザに渡
す?タイプのファイル)の404エラー(見つからない)ではなく500エラー(実行でき
ない)を返すのだと思いますが。
>中田さん
レスをしている限りはきちんと確認しなくてはと確認しておきました。<Perl.exeのパス指定
確かにPerl.exeだけで問題ありませんね。
ということは、ここをフルパスにしてうまく動いている人はPerlのインストール後リブート
しなければならない(別にしなくてもPerl.exe自身を使うには支障はありませんが)とい
うことを忘れているのかもしれませんね。
>というわけでTOPPYさん
前述の件に心当たりはありませんか?
或いは'D:\xxxx\xxxx'に当たるCGIソースコードファイルが見つからないのではないでし
ょうか。たぶんHTML文書ファイル等(つまりAN HTTP Serverが無加工のままブラウザに渡
す?タイプのファイル)の404エラー(見つからない)ではなく500エラー(実行でき
ない)を返すのだと思いますが。
>中田さん
コメントありがとうございました。NATの設定とかマニュアルを見ながら悪戦苦闘中です。
専門用語が多いので、色々インターネットで検索かけて勉強していきます。
CGIの方もおいおいと...。
余談ですが、中田さんのお名前、友人のお父さんと同姓同名字まで同じだったので驚きました(笑)。
CGIを実行しようとしたら、
<H1>Error 500</H1>
CGI エラー - 以下のコマンドラインを実行できません: "perl D:\xxxx\xxxx "
のように表示されてしまったのですが、どうすればよいでしょう?
こんばんわ。HTTPdはCGI実験用としてとても重宝させていただいています。
ところで、PROXY機能も備えているようですが、そこの設定と同じところに
「ゲートウェイ」というものがありますが、これは一体どの用に使うものでしょうか?
プロクシとは違うものですか?
(LANで繋がっている他のPCがHTTPdが動作しているPC経由でPOP3,SMTPが使える??)
いどっとさん、
不許可(拒否)の方は何も入れないでください。
許可の方を調べてから拒否かどうかを見ますので、許可の方で限定されていれば、拒否をする必要はありません。
(が、バグがあるかも。。。)
豊田さん、
エラー500の「Content-Type がありません」の後にどう出ていますか?
それによって原因がわかります。
いずれにしろCGI実行時のエラーですから、(j)perlの起動、perlスクリプト自体、ライブラリ、パスの問題などいろいろありえます。
ぴゅあさん、
私のところでは Win95/NTで単に perl でやっているので、MUSTとまでは言えないかなと思っています。
Windowsの「ファイル名を指定して実行」で単に perl と入れるのとほぼ同じ起動法になっています。 つまり、それで perl が起動できるように設定されていればいけるはずですが。。
akiraさん、
HTTPサーバ名は、
(1)TCP/IPのプロパティで DNSを使う設定の場合はそこの ホスト名
(2)DNSを使わない設定では、コントロールパネル/ネットワークのユーザ情報の コンピュータ名
のいずれかになっています。
したがって HTTPサーバ名は変えられますが、これを変えたからといって外部からその名前で HTTPアクセスができるわけではありません。
えむけいさん、
接続自体を拒否するのだと多分 Raw Socket を使うということになると思いますので、ちょっと時間がかかりそうです。 (今すぐには、こうすればいいというのが浮かんでいないということです。)
先日はありがとうございました。DNSサーバが狂っていました。
さて、今日はproxyサーバのアクセス制限について、質問します。
特定のIPのみを許可するにはどのような設定にすればよいのでしょうか?
設定したいのは、172.19.16.1と172.19.24.1の2つだけです。
サーバは、172.19.8.32です。
許可を上記のアドレスとした場合、不許可はどう表現すればよいのでしょうか?
よろしくお願いいたします。
>ぴゅあさん
>一つにPerl.exe或いはISAPIはちゃんと起動できていますよね?
jperl.exeは動いています。カウンタなどのSSIは動いているのですが、
URLに直接書いたり、FORMから呼ぶとこのエラーが出るのです。
タグの有無はこれから試してみます。
>豊田さん
過去の記事をチェックしていないので詳しいところまでは判りませんが。
一つにPerl.exe或いはISAPIはちゃんと起動できていますよね?
それからtext/htmlを指定した場合はちゃんとタグを記述しないといけないのかな?
そういうテストはしていないのではっきりしていないことは言えませんけど。(^^ゞ
print "Content-Type: text/plain\n\n"; ←書いてあるのには':'が抜けていますね
print "test\n";
で同様になるか試してみては?
エラー500が何処まで含んでいるかは中田さんに確認しないと判らないですけど。
>中田さん
perl.exeはフルパスで「書いた方が良いのかも」と書かれていましたけど、「書かなければ
ならない」ように思います。AN HTTP Serverの方でパスの取得をどのように処理しているのか
は判りませんがパスを指定しないとほぼ100%Perl.exeを見つけられないようです(σ(^ー^)の
環境では)。ISAPIがこのパスに関連しているのか、全く別物であるのかも不明ですが。
そろそろ時間が少しずつ出来始めたので、少しずつではありますが、解説も手を付け始めます。
その関連で久しぶりに真面目に?ActiveStateのチェックを昨日行いました。ActivePerlには
不具合が含まれていると明示されていますね。実用上どうなのでしょう。σ(^ー^)はまだActivePerl
には手を出していないので。また、別のバージョン(こっちは問題なし?)も公開されているよ
うではありましたが。
httpサーバ名は変えられないんですか?
NTで使っているのですが。
CGIがうまく動きません。
Content-Typeがありませんといわれてしまいます。
printが2行のperlですがダメです。
print "Content-Type text/html\n\n";
print "test\n"
これだけでも、エラー500が出ます。
中田さんありがとうございました。
順調に動いておりまして、いろいろと試してみて楽しんでおります。
1週間がんばったかいがありました。
本当にありがとうございました。
アクセスを許可している範囲外のサイトからアクセスを試みると「403 Forbidden」が返されますが、サーバの存在そのものを知られたくないのでWinGateのように接続自体を拒否するように設定できないでしょうか?
前田さん、
そうですね。豊吉さんの初めのと同じですが、オプション/一般の一番下の「.pl, .cgiを PerlIS.dll で実行」のチェックを はずして下さい。
原因は、PerlIS.dll がないためです。ActiveState の Perl for ISAPI というのが PerlIS.dll ですが、まずは、PerlIS.dll を使わず、perl.exe で始めるのがよいと思います。
なお、オプションの真ん中付近の 「.pl, .cgi の実行プログラム」のところは単に perl ではなく C:\www\perl\bin\perl.exe としておいた方がいいかもしれません。
おちゃさん、
ルータのIPアドレスをPCの内部用IPアドレスに変換するようにルータを設定するのが普通です。
そうした上で、ルータのIPアドレスを指定するとそのPCにアクセスできるようになります。
CGIの方は UNIXコマンド(cp,ls,date,sendmail,,,)を使っている他に Windows用の Perlでサポートしていない関数(symlink,flock,alarm,,,)を使っていることもあります。
立木さん、
ソケットはどうもデフォルトで(Windowsでも)バイナリモードのようなので、改行を "\n" ではなく "\r\n" にしてみてください。
すいません。投稿ページで書き込んだ後に「ドキュメントに...」とエラーが出たので、
書き込みボタンを2度押してしまいました。
出来れば二つ目の削除をお願いいたします。
早速のレスありがとうございました<(__)>。(顔文字とか(汗)とかいいのかな?)。
>えむけいさん
確かにLANのローカルアドレスを指定してました。教えていただいたとおりに早速
「Winipcfg」を起動してみたのですが、何が何やら...(汗)。
「IPアドレス」と言うのは「Ethernet アダプタ情報」の欄の事でしょうか?どうい
うふうに指定すればいいのでしょう。やっぱり何か手順書は用意しないといけませんね。
>ぴゅあさん
>過去のレスにパソコンを表に出す設定があるとありませんでしたか?
過去のレスを見て専門用語(?)が解らずに勝手に自分の質問に合致しないと判断して
ました(汗)。いや全く初心者でお恥ずかしい。
CGIが動かないと言うのは「UNIX」の知識がなかった私の馬鹿でした。「cat」と言う
単語も「Perl.exe」で処理されるんだと思ったのですが、何の気無しに「UNIX」のコマンド
一覧を見たら「MS-DOS」の「TYPE」文で代用できそうなので試したら問題なく動き
ました。勿論問題はこれだけでは無いのですけど。
<!--#exec cmd> の箇所は何でもかんでも「Perl」で実行させるわけでは
ないんですね。なんか「バッチファイル」みたい。
「CGI」の本については、過去のレスにも書いてありましたが、あれからまた何か
新しい情報でも有るかなと、失礼を承知で書きました。素人には何が良いかさっぱり
解りません。買って使って初めて解るんですよねぇあれって。
長文失礼しました。ありがとうございました。
はじめまして。初心者なので何分説明が足りない所もあると思いますがよろしくお願いします。
過去の書き込みを見ましてわかる範囲で修正しましたが、できませんでした。
(豊吉さんの書き込みと同様なものかもしれません。)
Index.htmlと同じフォルダにあるhello.cgiというのを、ブラウザで見ようとすると
ISAPI Error Internal Error. See "errors.log".
と出てしまい、ログを見ますと、
LoadLibraryEx("D:\www\perl\bin\PerlIS.dll") failed with errorcode = 1157
と出ていました。
D:\www\perl\bin\PerlIS.dllを探したところ、なかったのでダメ元でもう一度Perlを
インストールしてみましたがだめでした。
PerlIS.dllというファイルの記述を見させていただきましたが、私には難しくてわか
りませんでした。
原因と解決法があれば教えて頂ければ幸いです。
よろしくお願いします。
>おちゃ ひできさん
σ(^ー^)はブルータを使っていないので詳しくないので適切なレスがあるだろうと思ってい
たのですが。
過去のレスにパソコンを表に出す設定があるとありませんでしたか?
CGIがうまく動かないという点も過去のレスが参考になるでしょう。
CGIに特化した書籍はなかなか見つからないようですが、どうも流行りで多数
出版されているようなので色々見てみると(単なるサンプルだけでない)判り易い
書籍も見つかるでしょう。
σ(^ー^)は手に入れませんでしたが数冊見かけたように記憶しています。
おちゃ ひできさん
LANのサイト内ローカルアドレスを指定して接続しようとしていませんか?
winipcfg(95/98)とかipconfig(NT)でダイヤルアップアダプタに割り当てられているほうのIPアドレスが分かるはずなので、そっちを指定してみると吉かもしれません。
初めまして。おちゃ ひできともうします。
色々と良い評判を聞きまして早速ダウンし、勉強に勤しんでおります。
書籍に付録で付いているサンプルCGIが動かなかったりして悩んでおりますが
(「コマンドまたはファイル名が違います」と懐かしいメッセージが出るのは、
Perl自体は動いていて、実行できずに「command.com」にでも渡しているのか)、
これはこれでCGIを一から勉強する良い機会だと割り切っています。
何か良い書籍が有れば教えて下さると幸いです。ただアセンブラでDOSアプリしか
プログラムを組んだことが無いので私に理解できるかどうかが最大の問題ですが。
前置きが長くて申し訳有りません。質問する前に一通りこちらを読ませて戴い
たのですが、同じ質問が無さそうですので質問させて戴きます。
ダイヤルアップルータでインターネットへ接続し、「AN HTTPD」を起動して得られた
アドレスへLANで繋がっていない独立したマシンで、別プロバイダを使ってアクセス
してみるのですがテストページを見ることが出来ません。ブラウザが接続できずに
エラーを返します。
なにぶん初心者ですのでとてつもなく間抜けなミスかも知れませんし、ここへ書く
情報として何を書けばいいのか解らないのですが、「まず初心者ならこんな間違いを
する」と言うものがあれば教えていただければ幸いです。
KENTさんへ
やはり「ERROR」が表示されます。
-----
$ip_chk = 0;
$id_creat = 0;
$lockkey = 0;
$base_url = ".";
$err_gif = "http://127.0.0.1/~akko/count/error.gif";
-----
上のように書き換えても同じです。
うーん、難しい。
あらためてdream.lzhを解凍して書き換えしてない新しいものを
使って試してみます。
yybbsのカウンタをテキストではなく、画像に差し替えて試してみたら
それはカウンタ表示しました。
dream.cgiとは関係ないですね。
他にも簡単に設置できるカウンタあるかな。
夢カウンタは1つのスクリプトで複数に付けること出来ていいんですよね。
始めまして。
AnHttpdにはいつもお世話になっています。
趣味でネットゲームを制作しているのですが、
これ無しでは多分、作ろうとも考えなかったでしょう(^^;
ここで訊ねるのはあまりよくないとは思うのですが、
ほかに適当な場所が見つけられなかったので質問させてください。
Perlスクリプトの中でsocketを使用し他の場所の cgi を動かして
結果を加工したいのですが、うまく動いてくれません。
GET では問題ないのですが、POST でパラメータの設定を送ろうとしても
Centent-Lengthも含めて渡すのに失敗しています。
どのようにしたら POST の cgi を動かせるでしょうか?
勝手な質問だとは思いますが、ご回答いただけると助かります。
*:参照用にソースを記載します
$addr = (gethostbyname("127.0.0.1"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
select(S); $| = 1; select(stdout);
# print S "GET /cgi-bin/board/board.cgi HTTP/1.0\n\n";
print S "POST /cgi-bin/board/board.cgi HTTP/1.0\n";
print S "Content-type: application/x-www-form-urlencoded\n";
print S "Content-Length: 19\n\n";
print S "name=test&cookie=on\n\n";
中田さん、早速の回答ありがとうございました。
index.cgiは次期バージョンで対応ということで楽しみに待ってますね。
また、画像カウンタですが他のものに変えたところ(違うソースのもの)それは
ちゃんと動いておりますのでそれを使うことにしました。
CGIのテストにも、ローカルサーバとして大変便利に使わせていただき
感謝しております。これからも頑張ってください。
平井さん、
Java applet 中で指定する path のことでしょうか?
ちょっと「Javaで書いたCGIスクリプト」がどういうものかわからないのでなんとも言えません。
CGIスクリプトというのは、Javaのスタンドアロンの .class ファイルでしょうか?
Applet と CGIスクリプト のソースの要点を書いてもらえればもう少し何か言えるかもしれません。
あるいは、コンパイルするためのPATHの設定の仕方でしょうか。。?
ZEROさん、
そうするとどこかでビジーループという感じですね。
whileループのところを中心に見直してみます。
KENTさん、
いや迷惑ということはありませんのでご心配なく。
KENTさんのところからいらっしゃる方が多いので、そうしてもらえればさらにありがたいということです。
はじめまして。先ほど名前とメールアドレスだけを送ってしまいました。
すいません。
最近、httpdをダウンロードして、いろいろ勉強させていただいています。
で、質問があります。初心者なので何を質問すれば良いのかも分からないのですが...。
学校の授業で、Javaのappletから、Javaで書いたCGIスクリプトを実行させないと
いけないのですが、pathの設定の仕方が良く分かりません。
Compilerは CodeWarrior を使ってます。
どこに何をどのように置けば良いのでしょうか。
中田さん、お久しぶりです。
NTのCPU100%の件です。
1.13になってからの状態ですが、前より100%になるのがかなり少なくなりました。
1.13をリリースされてから3回しか100%になっておりません。
ただ、問題が1つと疑問が1つあります。
前のバージョンまでは、サービスで動かしてはないので、100%になった時点で
トレイにあるhttpdに合わせ右クリック→終了としてもちゃんと終われていたのですが、
今回は押してもなにも反応しません。
さらに、Ctrl+Alt+Delを押して、プロセスを切ろうとしても同じように反応しないです。
仕方がないので再起動すると、httpd.exeが応答をしませんとダイアログがでるので、
初めてそれで強制終了できます。
前より、安定した代わりに、100%後の終わり方がうまいこと切れないといった問題です。
現在はサービスとして実行しております。
これで終了ができるかどうかは試しておりません。
それと疑問ですが、前よりメモリの使用率が多くなっているのでしょうか?
少し気になっています。
お忙しい中、本当に申し訳ありませんです。
ではこれにて
■中田さんへ:
いろいろとご迷惑をおかけして本当に申し訳ありませんでした。
コンテンツを、中田さんへご迷惑がかからないように配慮するよう
近日中に見直すようにします。
■akkoさんへ:
gif1ディレクトリの位置は、
httpd/akko/public_html/count/gif1/
となっていて、その中に 0.gif ... 9.gif が正しくあるのでればディレクトリ構成
は間違っていませんね。(画像ファイル名も大文字になっていないですよね?)
それでは設定を以下のとおりにしてみて下さい。
-----
$ip_chk = 0;
$id_creat = 0;
$lockkey = 0;
$base_url = ".";
$err_gif = "http://127.0.0.1/~akko/count/error.gif";
-----
思い当たることは以上です。
こんばんは。
実はKENTさんのサイトで自宅サーバを知ってやり始めたばかりです。
初心者にとって、オンラインでなくてもCGI試せるっていいですよね。
で、質問の続きです。
ログファイルは自動で作られるんですよね。
出来てました。おなじcountの中に。aa.datが。
http://127.0.0.1/~akko/count/dream.cgi?id=aa
で出てくるのは「ERROR」です。error.gifの画像だと思います。
カウンタを付けたいファイルに書いたタグは
<img src="./dream.cgi?id=aa&gif=1">
パスが
httpd/akko/public_html/count/
countフォルダの中にdream.cgi、edit.cgi , gifcat.pl , error.gif
カウンタつけたいakko.htmlがあります。
画像用のフォルダもこの中です。gif1フォルダにして、0.gif〜9.gifが入ってます。
htmlファイルにhttpからのフルパスで書いてみても同じです。
ファイル位置に間違いがありますか?
カウンタ数字が出る部分にERRORとまで出るんだから、
大間違いをおかしてるとも思えませんが。?
仙太郎さん、
バーチャルホストは、ネットワーク公認のホスト名(IPアドレス)が複数ある場合にそれぞれを別々のHTTPサーバであるかのように はたらかせることです。
ホスト名は好きな名前をつけられるわけではありません。あくまでもインターネットやLANで公認されていないといけません。
公認されているというのは、DNSサーバに登録されている、という意味です。
ローカルホストだけでやる場合は好きにできますが、それではあまりバーチャルホストを使う意味はないでしょう。
KENTさん、
どうも。
AN HTTPD の質問も受けてもらいたいところですが、現在やっていらっしゃるスクリプトのサポートだけでも大変そうですから、そうもいかないでしょうね。
「AnHTTPd必要最小限の設定」の画面を最新バージョンのものに替えていただけるとありがたいです。
結構質問があるものですから。
TigerCat さん、
Content-Disposition: は HTTP 1.0/1.1 にはないと思います。つまりブラウザが解釈できないのではないかと。
Location: でファイルを指定して、拡張子 .abc を MIME にセットするくらいしか思いつきませんが。。
吉田さん、
そうですか。。。
だとするとなぜかわかりません。しばしお待ちを。
pegasus さん、
すみません、index.cgi は確かに実行できません。これは次のバージョンで直します。
画像アクセスカウンタの方は、PerlスクリプトでGIFファイルを作るような方式だとすると Windowsでは binmode にする必要があります。
そのアクセスカウンタがどこの何かを言っていただければ原因ははっきりすると思います。
dull さん、
AN HTTPD の現在までのバージョンではエラーメッセージを差し替えることはできません。
いつもお世話様です 中田さん
shikaさんへ
私もKENT さん と 同じ意見です LANを 使用して に してないですが
httpd 立ち上げるとき ダイヤルアップ接続を
そのまま キャンセル してます
でも 友達に来てもらうときは そのままつなげます
間違っていたら ごめんなさい
さて 本題
中田さん バーチャルホスト は IPアドレス(数字) の 代わりに
好きな 名前つけられるのですか?? いろいろ やってみてるんですが・・・・
簡単に言うと バーチャルホスト って なんですか??
PS KENTさん いつもお世話様です いつも いただいています これからもよろしく
お願いします
■中田さんへ:
いつも大変お世話になりながら、ごあいさつもろくにせず大変失礼をしております。
AN HTTPd v1.13 はいい感じですね。リソース消費の改善や使用中のエラー回数も
それほどなく、安定してきてとても重宝しています。
さて、この掲示板でもしばしば話題になっています sendmail の代替品として、
フリーのものだと、中田さんおすすめの Blatj がいいですね。
日本語化されているので随分と使いやすいです。
先日、Blatj を使用したメールフォーム送信スクリプトと、記事投稿があった場合に
管理者あてにその記事内容を自動メール通知する掲示板スクリプトを Perl で
作成してみました。(Windows98 + AN HTTPd + Perl5 で動作確認しました)
今度そのスクリプトを拙サイトの「自宅マシンWWWサーバ化計画」にて公開して
みたいと考えています。
今後ともよろしくご指導をお願いします。
■shikaさんへ:
> AN HTTPDを使う前に、IEの場合は、「コントロールパネル」・・「インターネット」・・
> 「接続」で「必要時に接続」をOFFに設定しなければならない。とあります。
> Windows98、IE4.0を使用しているのですが、その設定をする場所が見あたりません。
> 誰か、教えて下さい。
私も同様の環境ですが、
「表示」 --> 「インターネットオプション」 --> 「接続のタブ」--> 「LANを使用して接続」
でいいと思います。
■akkoさんへ:
> 夢カウンタ(KENTさんの所の)をローカルサーバでhtmlファイルに貼り付けたとき、
> ERRORが表示されます。
> ローカルのpublic_html/countフォルダにdream.cgi
> edit.cgi , gifcat.pl , error.gifといれてあります。
> lockkeyはすべて0にしてあります。
> 考え付くことは全部やったつもりですが、何がいけないのでしょう。
> ネットに接続して、プロバイダに置いたhtmlでは動いていました。
> 手直ししたく、ローカルで試してみたいんです。
上記構成で、ログファイル(*.dat) とGIF画像はどうなっているのでしょうか?
ファイル位置とディレクトリ位置を確認してみてください。
また、例えばログファイルが sample.dat とした場合、
http://127.0.0.1/~akko/count/dream.cgi?id=sample (akkoの部分は任意)
とブラウザに直接打ち込んでみたらどんなエラーが出ますか?
こんにちわ。またしてもCGIに関する質問があります。
下のスクリプトを download.cgi としてサーバに
設置したとします。
このdownload.cgiをブラウザから実行すると、
スクリプトどおりにいくと、test.abcというファイル名で
ダウンロードが始まるはずなのですが、なりません。
必ずdownload.cgiになってしまいます。
なんとかしてこちらの意図するとおりのファイル名で
ダウンロードさせたいのですが、いかがなものでしょうか。
#!/bin/perl
$filename = 'test.abc';
# ヘッダ出力 ファイル名、拡張子も指定している(つもり)。
print "Content-Disposition: form-data; name=\"abc\" ;filename=\"$filename\"\n";
print "Content-type: application/x-unknown\n\n";
print "naiyou naiyou \n";
吉田です。
中田さん>
共有の件て、ANHTTPDが落ちると、共有ドライブにアクセスできなくなる件ですよね。
これは相変わらず、ANHTTPDが落ちると、接続できなくなります。なぜなんでしょうか?
shikaさん>
IE4.01 SP1にはないようですね。
それはIE5.0の設定じゃないかなぁ?手元のIE5.0b2ではそうなっています。
はすれていたらごめんなさい。
そうそう、IE5.0は3/18にリリースだそうです。
こんにちは〜。
AN HTTPDを使う前に、IEの場合は、「コントロールパネル」・・「インターネット」・・
「接続」で「必要時に接続」をOFFに設定しなければならない。とあります。
Windows98、IE4.0を使用しているのですが、その設定をする場所が見あたりません。
誰か、教えて下さい。
おさがわせしました。
再起動してませんでした。
すみませんm(__)m
以前より、WEBに載せる前のCGIテストの為利用させていただいております。
質問なのですが、index.htmlの変わりにこの度index.cgiにてアクセスログをとるようにし
たのですが、直接index.cgi指定なしで(http://www.kita.ne.jp/~pegasus/)アクセスしたと
き通常ではindex.cgiが実行されるのですが(実際載ってるWEBでは)ローカル環境では
オプションでデフォルトインデックスをindex.cgiにしたところソースがそのまま表示され実行され
ませんが対処方法はあるのでしょうか?
それと以前にもタコラキングさんが似たような事を質問していたのですがアクセスカウンタ
でGIFファイルにて表示するものを使っているのですが実際画像が崩れたり、最終桁は表示されないと言った事がおきているのですが、何が問題なのでしょうか?
>ぴゅあさん
遅くなりましたが、ありがとうございました。
教えていただいたとおりに、IPを変えたらサーバに接続できました。これでばしばしCGIの実験ができます。ありがとうございました。
また質問にきました。
夢カウンタ(KENTさんの所の)をローカルサーバでhtmlファイルに貼り付けたとき、
ERRORが表示されます。
ローカルのpublic_html/countフォルダにdream.cgi
edit.cgi , gifcat.pl , error.gifといれてあります。
lockkeyはすべて0にしてあります。
考え付くことは全部やったつもりですが、何がいけないのでしょう。
ネットに接続して、プロバイダに置いたhtmlでは動いていました。
手直ししたく、ローカルで試してみたいんです。
はじめまして。
早速ですが質問があります。
FAQの18と同じようなんですが、text/plainに変更してもダウンロードになってしまいます。
設定が悪いのでしょうか。リンクにある自宅マシンWWWサーバ化計画を参考に、というかその通りやったんですが。
WIN98・IE4.01を使っています。
すいません 初歩的な質問かと思いますが・・・・・・・・・・・
Error 403や404を自分の用意したものと差し替えたいのですがどのようにしたらよろしいのでしょうか?教えてください。よろしくお願いしますm(_)m
PS、メールの調子が悪いのでResは掲示板でお願いします
akko さん、
ローカルでそのままできないものはありますが、たいてい代わりの手段があると思います。
仙太郎さん、
漠然としている場合は聞きかえすこともあるとは思いますが、遠慮なくどうぞ。
ぴゅあさん、
10/8(クラスA)のマスクは 255.0.0.0 ですが通常それで使うことはないと思うので。
サブネットにして 255.255.255.0 やさらに 255.255.255.128 とか、することが多いと思います。
ホスト部がオール0はネットワーク、オール1はブロードキャストでしょうから、マスク 255.255.255.128 の場合の 0,128はオール0、127,255 はオール1になりますね。
マスクが 255.255.255.0 なら、それぞれ 0 と 255 だけだと思います。
レスはご遠慮なく。
ここも AN HTTPD の機能不足やバグが続く限り書き込みがなくなることはないでしょう。それが"楽しみ"と言えなくはありませんが時には"苦しみ"です。
よろしくお願いします。
ぴゅあさん、うまく出来ました。
ありがとう。
いまCGIでためしてます。自分では書くことできないので、
フリーのものを改造してます。
でもそのプログラムによって、ローカルで出来るのと出来ないのあるんですね。
難しいです。
初めまして 仙太郎 と いいます
まだまだ 初心者 ですけど
楽しく やってます これからも よろしくお願いします。
とりあえず 動かして 遊んでますけど まだまだです
また 漠然とした 質問するかも しれないですけど
おねがいします では。。。
>中田さん
10.*.*.*でもありましたか。いくつかあるとは思っていましたが、マスクが違っていたよう
な?
でも、確か、*.*.*.0,*.*.*.127,*.*.*.255だったかな?は特別な意味があったんでした
よね?
時間が出来たら久しぶりに調べてみよう。
どうもレスを付けると中田さんの楽しみを取ってしまうような気がして....
最近何処の掲示板もカキコがなくなっている所為で特にそう思ってしまうのでしょうか。
確かにレスを書くのを楽しみにしている人も居れば、忙しいときには誰かに任せたいと思った
りするものですけど。
σ(^ー^)が担当しているICQ関係の掲示板も質問がほとんどなくなっているのでそう感じたり。
質問が減るということは今までのレス等で問題が出なくなってきているということで良いこと
ではあるのですが。
いとさん、
どうもありがとうございます。
私も httpdが「トレイ上」の場合に終了時メッセージが出ることを確認しました。
早速対策を考えます。
プライベートアドレスの範囲は、JPNICのFAQ.6040などにもある通りで 10.0.0.0 - 10.255.255.255 も使えます。
(サブ)ネットマスクが 255.255.255.0 ならたとえば 10.1.2.0 や 192.168.0.0 など最後が 0 だとその(サブ)ネットワークを指すアドレスになります。
ネットワークの設定後、IPアドレスで互いにアクセス可能かどうかを確認するには、ping.exe を使うのがよいでしょう。
たとえば 192.168.0.2 から ping 192.168.0.1 とすることで、192.168.0.1 から応答があるかどうか確認できます。
ping で応答があるなら、httpd も応答するはずです。ping はOKで httpdから応答がないときは httpd の(設定などの)問題になります。
中田さん、こんにちは。お久しぶりです。
何人かの方から報告されているwindows終了時に出るメッセージに関してですが、私も
遭遇しましたので、ちょっと調べてみました。
Win98起動 -> AnHTTPd起動 -> Win98終了 これだけで起きます(ブラウザは無関係)。
helper「Windowsを終了する前に、このプログラムを終了してください」と出ます。
ブラウザからcgiを実行した場合には、「helper」ではなく、「perl」に変わります。
この現象は、AnHTTPdで表示の動作形態が「トレイ上」の場合にだけ起きるようです。
「トレイ上」の場合でも、一度AnHTTPdのウィンドウを開くと、最小化しても出ません。
ヘルパープロセスがチェックしてないときは出ません。AnHTTPd v1.11では起きません。
自宅のPCでしか確かめていませんが再現性はあります。他の方はいかがでしょうか?
当面の対策としては「トレイ上」から「タスクバー上」に変更することが考えられます。
参考になればいいのですが。
>斉藤和樹さん
完全にローカルな環境で使っているのかもしれませんがIPアドレスは192.168.*.*のように
します。このときマスクは255.255.255.0。
また、*.*.*.0は使えません(筈)。
例えば192.168.0.1, 192.168.0.2のようにすると問題なく接続できるでしょう。
すばらしいソフトをありがとうございます。CGIの勉強のために使わせていただいてます。
ところで一つ教えていただきたいことがあります。
2台のパソコンをローカルで繋いでいます(A,Bとします。ちなみに2台はピアトゥピアで、プロトコルはTCP/IP。IPは10.1.2.1と10.1.2.0を使ってます。)。
AにhttpdをインストールしておりこちらでCGIのテスト等をしているのですが、BからもA内のhtmlを開こうとする際のやり方がわかりません。BからのURLは10.1.2.1/~usernameでいいと思うのですが、つがうのでしょうか?あるいは、なにかhttpdで特別な設定をする必要があるのでしょうか。
>akkoさん
A:\httpd\perl\bin\perl.exeではありませんか?
また、必ずA:\...のように'\'を入れる必要があります。
正確なパスを知るにはスタートメニューにある検索のファイルやフォルダでAドライブの
Perl.exeを探してみると良いでしょう。
さっきの書き込みでてますか?
はじめまして、とても初心者です。
Error 500
CGI エラー - 以下のコマンドラインを実行できません
: "A:httpd\perl\perl.exe A:\httpd\akko\public_html\hello.cgi ",
errorcode = 2, No such file or directory
とでます。
AN HTTPD113の設定で.cgiの実行プログラムでperlのパスを書くんですよね?
A:httpd\perl\perl.exeになってます。(NECのPC。perlはhttpdディレクトリに
インストール)
Perl for Win32をインストールした場所がいけないのかとも思い、
削除してインストールしなおしたりを3回くらいしました。
OUTOEXEC.BATを確認してみるとやたらと長いパスが出てくるんですが。
さっぱりわかりません。以上の説明で原因がわかるでしょうか。
吉田さん、
共有のエラーは出なくなった、ということはありませんか?
もっともあまり落とすわけにはいかない状態のようですから、無理に確認していただかなくても結構です。
落ちる原因はまだ確定できていませんが、引き続き対策を考えていきます。
SASEさん、inagakiさん
内容は了解ですが私のところでは再現できないでいます。
Win98起動後 httpdとブラウザを起動しCGIをひとつ動かしてWin98終了 でもそうなりますか?
お話からすると多分そうなるのでしょうからよく調べてみますが、何か追加情報がありましたらお知らせ下さい。
吉田です。
先ほどOKって書いたばっかりでしたが、またまた死んでしまいました。残念。
キャッシュログは前回と同じで、ファイルの数(サイズ)を数えているときに
死んだようです。
Fri Mar 12 17:31:05 1999 Cache: enumerating aborted at 10168 files, total 92736293 bytes
ワトソンログは別途送付しますが,前回と同じかなぁ?
でも、大分安定はしてきたみたいです。
あるタイミングではっせいするのかなぁ?
中田さん。こんにちは。
今日でV1.13を入れて3日たちます。元気に動いています。
キャッシュ自動削除の件、対応していただいてありがとうございました。
いつもすばやい対応に感謝感謝です。
これからもがんばってください。
また、何か有りましたら,報告しますので,そのときはよろしくお願いします。
>再確認ですが、helper(perl) のDOSウィンドウは開いていない状態での話でしょうか?
そうです。開いていません。
>また、AN HTTPD の終了(メニューの終了またはウィンドウクローズ)では helperも終了すると思いますが、それもできませんか?
これはできます。
an httpdを立ち上げた状態で
win98を終了しようとするとだめなのです。
わかりました
どうもありがとうございます
早速今度聞いてみたいと思います
CGIでSMTPを直接操作するフォームメールCGIならうちでも公開してますので良ければどうぞ。
まぁ、設定が面倒なので初心者のかたには向かないかもしれませんが。
スクリプト配布ページのURLは以下です
http://www.venus.dti.ne.jp/~asuka-s/download/
>再確認ですが、helper(perl) のDOSウィンドウは開いていない状態での話でしょうか?
えと、出ません。
>また、AN HTTPD の終了(メニューの終了またはウィンドウクローズ)では helperも
>終了すると思いますが、それもできませんか?
はい、終了しますね。(^^;
Windowsを終了する前にHTTPDを明示的に終了してやれば良いんですね…。
SASEさん、inagaki さん、
再確認ですが、helper(perl) のDOSウィンドウは開いていない状態での話でしょうか?
また、AN HTTPD の終了(メニューの終了またはウィンドウクローズ)では helperも終了すると思いますが、それもできませんか?
haneさん
CGIなどもぜひ動かしてみてください。
豊吉さん、
CGIのための実践入門Perl追補版をご覧ください。
cgi-lib.pl についてはミスプリントのようなものです。通常、jcode.pl や cgi-lib.pl の中身について考える必要はありません。
追補版での訂正箇所は書いてある通り直した上で、その本でいろいろやってみるのでよいと思います。
pattomanX さん、
公開はしてもらえないのでしょうか(?)。
ダークマンさん、
ケーブルテレビのLANではそれぞれのPC上にサーバを立ち上げても外からはアクセスできないかもしれません。
ルータとかの設定次第なのですが、ケーブルテレビの方にできるのかどうか問い合わせてみるしかないでしょう。
以前、winの終了時にhelper.exeから応答がないというエラーがでると
質問したものです。
1.13では対応されてるとのことで、
DLしてみたのですが、
やっぱりエラーがでます。
IMEの表示非表示には関係ないようです。
えーと、1.13でもやはりCGIを実行すると不具合でますね。
Helperがずっと居座ったり、Perl使えばPerlが居座ったり…
CTRL+ALT+DELで強制終了させるか、Windows終了時に文句言われてそのとき
終わらせるか…になります。
★jcode.pl,cgi-lib.pl
CGIを許可しているプロバイダに加入している人は少ないのかもしれませんが、UNIXサーバ
なのであればまずサーバに入っているものと思います。
また本来であればフリーのCGIと共に配布されているものではなくこのサーバ内に用意され
ているものを使うべきだと思います。
参考までに大抵のフリーのCGIではrequire './jcode.pl';のように書かれているところを
require 'jcode.pl';と直すことでサーバ内のjcode.plが取りこまれるようになります。検
索の順位は忘れてしまいましたが、確かこれで良かったのではないかと思います。
手に入るのであればこのサーバ内のライブラリを吸い上げてくるのが確かです。実際に動い
ているものですしプロバイダのサーバにアップする前のテストとして使っている場合には一番
近い環境となるのでベストでしょう。whereisだったかコマンドは忘れてしまいましたが、サーバ
の中を捜せば見つかると思います。また探せないなら大抵プロバイダに問い合わせれば教え
てくれるのでしょう。管理の厳しいところでは駄目かもしれませんが。
CGIの勉強のための本としてはやはり流行りということで最近多く並んでいるようです。どん
どん新しい本が出ているようです。地方では難しいかもしれませんが。色々手にとって自分に解
りやすい本を見つけることをお勧めします。タイトルにとらわれずにちゃんと中身を見てみるこ
とです。簡単とかサンプル付きとかタイトルにあってもただインターネット上で公開されている
ものが付録に付いているだけの参考になりにくい本が多いことも確かです。
自分のマシンが、HTTPサーバにできるということで、
早速DLしました。
学校のLANでは、課題用のHPをテストとして表示させてみました。
友達がびっくりしていたので、ちょっとうれしかった。
IPアドレスの指定だけで閲覧ができるなんて、ヒョーーッって感じです。
自分の家では、ネットにはつながっていないので、テスト用に使っています。
>cgi-lib.pl の112行目が、
>$in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separato
>となっていて次の行が、
>r
>になっていると思います。
に、なっていました。
動作確認もOKです。
CGIの入門書として、技術評論社"CGIのための実践入門Perl"を参考書に
手を取りました。
"cgi-lib.pl"はこの本のCD-ROM内に付属されていました。
私のような初心者で、私の場合サンプルスクリプトを少しずつカスタマイズしながら覚えていく
方法を取っているのですが、"cgi-lib.pl""jcode.pl"含めその他ライブラリの中身まではそうそう手が回りません。
この本で上げられているサンプルスクリプト集を参考に覚えていくとなるとこの本は
あまり参考にならないのでしょうか。
中田さんいつも御迷惑かけます。
"cgi-lib.pl"は@で送ります。
以前 Windmailの話をしたところ、
「Windmailのフリーソフトは期間限定版だから、使いたくない。
windows用の smtpを直接呼び出す フォーム送信cgiを
作ってくれ」というメールが何人かから きました。sendmailいらず。
暇になったので 作ってみました。
こんな感じです。→ http://www2.patt.gr.jp/~patt/testmail/kari.html
興味ある人は メールを。
An-httpdサーバでも動きますよ。但しperl5がインストールされてないと
いけませんが。
1.13をDLさせていただきました。
CGIの実行が爆速になっていますね(^^)
とても気持ちいいです。(^^)/
中田さん>
わかりました
ありがとうございます
初めまして
ケーブルテレビの回線でLAN接続してるのですけども
接続要求待ちと表示されたままなんですけど・・
自分のブラウザからは使えるみたいなのですけど
他の人がアクセスできないみたいです
kuriさん、
IRC は HTTP とは全く別ですから、HTTPサーバは IRCのサーバにはなりません。
ついでに、FTP、SMTP、POP3などのサーバにもなりません。
豊吉さん、
cgi-lib.pl が異常です。
cgi-lib.pl の112行目が、
$in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separato
となっていて次の行が、
r
になっていると思います。
つまり、separato(改行) r になってしまっているので、その改行を削除して、
$in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator
とすれば大丈夫です。
つい最近メールで全く同じ症状の話があって cgi-lib.pl を送ってもらってわかりました。
豊吉さんは cgi-lib.pl を編集はしていないでしょうから、もともとの cgi-lib.pl がおかしいのだろうと思います。
どこで入手した cgi-lib.pl なのかお知らせ下さい。
Perlのエラーメッセージはこの場合のような単純なミスのときにはあまり参考になりません。
むしろわけのわからないメッセージの場合はタイプミスと思った方がいいくらいです。
が、エラーメッセージの説明は Perlをインストールしたフォルダ内の docs\Perl\perldiag.html にあります。
cgi-lib.pl は CGI関係のサブルーチンを集めたライブラリです。
通常は cgi-lib.pl の中の ReadParse だけを使うことが多いでしょう。
ReadParse は GET/POSTのデータの読み込みと、読み込んだデータの %XX のデコードや key/value の分解をおこないます。
それだけならそれほど手間はかからないので ReadParse は使わないことも多いようです。
つまり ReadParse などを使わないのであれば、require 'cgi-lib.pl' は不要です。
ただし、ファイルアップロードの処理(Content-type: multipart/form-dataの処理)は自分で新たに書くのは結構面倒なので、その場合は cgi-lib.pl (の ReadParse)を利用することが多いのではないかと思います。
中田さん>
僕の思い違いでした
何とか実験成功
お手数かけました
ところで話は変わりますがIRCサーバとしての使用は
出来ますか?
変な質問ばかりすみません
こんにちは。
"cgi-lib.pl"をスクリプト中に書きこむと以下の用になります
(Did you mean $ or @ instead of &?)
Can't use subscript on subroutine entry at cgi-lib.pl line 114, near "$key}"
このエラーは良く出るのですけれども、どんな意味ですか?。
"cgi-lib.pl"に、問題があると言う事なのでしょうか?。
無料配布している同じようなスクリプトをテストして見ると、
実行される"abc.cgi"スクリプトには"cgi-lib.pl"は記弁されておらず、
実行されない"abc.cgi"スクリプトには"cgi-lib.pl"が記弁されています。
"cgi-lib.pl"="デコードプログラム"と言う事で良いのですよね、基本的な事ですみません。
ぴゅあ様、中田様 本当にありがとうございます。
gethostbyaddr を無効にして試したところ早くなりました。
これからもよろしくお願いします。
>中田さん
早速のレスありがとうございます。
他のPC(ほぼ同環境)にインストールして試したところ問題なくログを見ることが
できました。やはり私のPCに問題があるようです。
他のエディタやビューアに変更して試したのですが私のPCでは同様の現象が発生します。
(ページ違反のメッセージBOX=>[OK]=>表示されたままのファイル選択のダイアログ
からログを選択=>指定したログビューアでログの表示=>表示を終了=>フリーズ)
今度、時間があるときにWindowsの再インストールをやってみます。
お手数をおかけして申し訳ありませんでした。
いなせさんへ補足。
修正するファイルは light.cgi です。
yama さん、
どうもありがとうございます。
お元気そうでなによりです。
いなせさん、
もし本当に超初心者だとするとちょっと発見するのはむずかしいかもしれません。
1、2分かかるのは、大体 DNSサーバなどに接続しようとする場合です。
ファイルの最後の sub get_host のところを下のように # を入れて gethostbyaddr を無効にするのがよいでしょう。動作に影響はないはずです。
sub get_host {
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
# if ($host eq "" || $host eq "$addr") {
# ($p1,$p2,$p3,$p4) = split(/\./,$addr);
# $temp = pack("C4",$p1,$p2,$p3,$p4);
# $host = gethostbyaddr("$temp", 2);
if ($host eq "") { $host = $addr; }
# }
}
えむけいさん、
そうですね。If-Modified-Since はそういう扱いの方がいいかもしれません。
その線で考えます。
中田さんご無沙汰です。
v1.13おめでとうございます。
どうぞご自愛のほど、お願いいたします。
最新はここです
>いなせさん
まず、AN HTTP Serverでは特に設定は必要ないものと判断しています。細かい部分は中
田さんに答えを頂くのが最も正確でしょうが。
多くの場合、様々なサイトで公開されているCGIはそのままでは使えないことが多くある
筈と思います。たぶん待たされるというのもその辺にあったりするのではと思ったりもしま
すが(投稿のときだけといったことより)。ただ、こういった質問の場合に何処のサイトの
何を使ったのか、或いはオリジナルのものもであるかを明記してくれない人が殆どなので判
断も難しく中途半端な回答になってしまうのですが。
また、同時に投稿したとき排他処理をきちんと設定していないとそのようになります。一
方のプロセスが落とされているのではないと思いますので(もしそうならエラーが通知され
る筈)。σ(^ー^)が色々な公開されているCGIソースを見た限りではWin上では正常に排他処
理が行われないと思われるもの、UNIXサーバ上でもそのようになるのではないかと思われ
るものが殆どであるように思われます。たぶんその辺の処理が原因であるものと思うのです
が。特にプロバイダのサーバに比べてパソコンは遅いと思うのではっきりとした形で現れ
たのでしょう。
使われているのはoidonさんのところのものですね。ざっとしか読んでいませんが、
$lockkey=2とすることで一応排他処理が出来るものと思います。そのまま使うと排他処理は
行われません。この辺はちゃんと見られているのだと思いますが。1分くらい待たされると
いう点は見ていませんが勉強のつもりで読んでみるのがいいでしょう。Perlが処理する部分
ですので通常AN HTTP Serverは関係しないと思うのですが。
徹夜のままで眠いので簡単ですがこんなところで(文章も変かも)。m(__)m
超初心者なのですが、AN HTTP Serverを使わせてもらい掲示板をテストしてみたら、
投稿の時だけ プロセス終了待ち となって1分後位待ってないと表示されないのですが、
何か設定があるのでしょうか?
また、2台のパソコンから、ほぼ同時に投稿すると、最初に投稿したlogに上書きされる
みたいで、後から投稿した物しか残りません。これは掲示板の設定が悪いのでしょうか?
使用しているのは、Windows95,NTT-TE東京のMN128 SOHOで掲示板は OIDON de Tips(http://www.iod.co.jp/~oidon/)のLight Board v5.0bです。
どうかよろしくお願いします。
単なる設定ミスでした。
お騒がせして申し訳ありません。
NTでGETで標準入力を読み込むCGIはばっちりOKになりました。ありがとうございます。
キャッシュの有効期限が切れたと判断した場合、ブラウザからの要求をそのまま転送しているようなのでそれにIf-Modified-Sinceが付いていないと何メガあるリソースでも必ずぜんぶ取得し直してしまうようですが、キャッシュ内のヘッダにLast-Modifiedがある場合If-Modified-Sinceを付けて取得して、304が返ってきたらキャッシュのヘッダだけを更新してブラウザには200でキャッシュの中身を返すというふうにはできないでしょうか?
かくにゃらさん、
MPREXE.EXE の方はよくわかりませんが、オプションのログでログビューア(デフォルトはワードパッド,write)を適当なテキストエディタに変更するとどうなりますか?
接続状況の方はちょっと中途半端になっているので、今のところ使用を避けていただきたいと思いますが、ページ違反にはならないように直したいと思います。
はじめまして、かくにゃらと申します。
AN HTTPDをWindows98で使わせていただいてます。
ログを見ようとして[ファイル]-[ログを開く]を選択すると
MPREXE(.EXE)のページ違反となります。
(モジュール:KERNEL32.DLL、アドレス:o15h:bff7a4a3)
メッセージBOXに応えるとファイル選択のダイアログは
表示されたままなのでログを選択するとログの表示はされるのですが
ログの表示を終了すると必ずフリーズしてしまいます。
(HTTPサーバの停止/接続に関わらず発生)
また、[HTTPサーバ]-[停止]で停止の状態で
[接続]-[接続状況を更新]を選択するとHTTPDのページ違反となります。
コメント集にも同様の現象はなさそうですし、私のマシンも少し
不安定なので、固有の問題であれば通常の使用に問題はないので
エラーの原因となる操作を回避して使用したいと思いますが、
なにか解決方法あれはお教えください。
>ACTION= の指定が CGI (拡張子が .pl や .cgi) になっていますか?
"はい"なっています.
中田さんのほうで問題がその他見当らないとすれば、
プログラムに問題が有るのかもしれませんね、もう少し
自力で頑張ってみます。
豊吉さん、
ACTION= の指定が CGI (拡張子が .pl や .cgi) になっていますか?
エラーメッセージがちょっと変ですが、たとえば ACTION="abc.html" だとそのエラーになるようです。
ふうせんさん、
そうです。デフォルトインデックスファイルを捜す場合、1.12 では Content-Length を出すものだとエラーになります。
先ほどコメント書いたのにおかしいな???
早めのご帰還です。
只今"フォームデコード"作業中なのですが、
"POST"は、このサーバでは使えません、と、
出てしまいます、何かオプション設定が必要なのでしょうか?。
"GET"でも同じ結果なのですが。
どうも、ふうせんです。
あれから調べたら
・SSI を無効にすると空白ページになる
模様です。
私のページは SSI を使っていたのですが、設定を見たら初期状態になってて、
SSI を使わない状態になってたみたいです。
SSI 使用にしたら正常に動くようになりました。
こんにちわ!
早いお帰りで申し訳有りません。
只今"フォームデコード作業"をしていますが
"POST"はこのサーバでは使えません。と、でるのですが
METHOD="GET"なら使えるのですか?。
"GET"の結果でも"POST"はつかえませんとでてしまいます。
オプションの設定でしょうか?。
タコラキングさん、
調べてみた結果、そのエラーが出る原因はほぼわかりました。
Daichi君からも指摘のあったエラーですね。
ヘルパーを使う場合にCGIプロセスの後始末の仕方に問題がありました。
修正を加えたものを明日のバージョンにいれられると思います。
中田さん
>GIFカウンタのリロードでのフリーズですが、しばらく待っても動きませんか?
>だとしたら不具合があるのかもしれません。
フリーズというのは言葉違いで、画像のダウンロード中となったまま先に進まなくなる
ということです。最高2分くらい待っても動きませんでした。
httpdの状態は CGI/SSI プロセスの終了待ち です。
で、その間、ずっとerrors.logにエラーログを書きつづけるという状態で、ファイルサイズが
見る見るうちに大きくなっています。
書きこまれる内容は
Sat Mar 06 00:08:51 1999 KillProcess: Got Process ID = 0, dwExitCode = 0
の繰り返しです。
また、私のも、他の方と同様に、終了する際「Perlを終わらせてください」とのコメント
が出ます。こういったことも関係しているのでしょうか?
うえぽんさん、井上さん、RYUさん、
井上さんのもそうだと思いますが、
>中田昭雄 nakata@st.rim.or.jp 1999/02/28 20:14
にもある通り、ヘルパープロセスが終了できないというのは確認しています。
対策中ですが、今週末のバージョンには間に合わないかもしれません。
ヘルパープロセスは、Win98/IE4 で発生するシステムリソース減少対策ですので、それが気にならない場合は チェックをはずしておいてもCGI/SSI動作自体には影響はありません。
ヘルパープロセスを使うとエラーがでやすいようなのであわせて見直しています。
なお、ヘルパーは Win95/WinNT でも一応動作することは確認していますが、Win98以外では使う意味はありません。
タコラキングさん、
GIFカウンタのリロードでのフリーズですが、しばらく待っても動きませんか?
だとしたら不具合があるのかもしれません。
kuriさん、
exe は動かせますのでどうぞ。
あれこれCGIをチェックしCGIには不備が見あたらなかったので
これはと思いヘルパーアクセスのチェックをはずすと問題はなくなりました。(うえぽんさんありがとうございます)
問題はなくなったのですが本当にこれでいいのでしょうか。
もう一度CGIをチェックしてみることにします。
お世話になっています。井上@ループスケッチweb design work siteと申します。
ボクも、cgiをローカルテストするのに使用させていただいております。
最近のバージョンになってから下の方と同様の現象が発生します。Perlが悪いのか
と思っていたのですが、どうにもスクリプトの不備は無いようなので投稿しました。
Win98を終了するときに、Perlが終了していません、とダイアログが出てきますので、
いつも先にhttpdを終了してから、終わらしています。これが直ると便利なのですが。
これからも良いツールをお願いします。
こんにちは。
私もRYUさんと同じように、HelperとPerlを終了させてくれ、という状態になった事があります。
PC/AT互換機+Win98+AnHTTP1.12でやっていますが、
借りたPC-98Xa16+Win95+AnHTTP1.12という条件で、先日試してみたところ、
上記状態になって、CGIが動かなくなりました。
あれこれやっていたのですが、ヘルパープロセスのチェックボックスをはずしたら、問題がなくなりました。
Win95でヘルパープロセスは使っちゃいけない、なんてことはないのでしょうか?
ヘルパープロセスが何かも知らず、素人があれこれ言って申し訳ありませんが、なんかの参考になれば・・・
はじめまして、うえぽんと申します。
いつもありがたくAnHTTPを自宅テスト用に使用させていただいております。
久しぶりにAnHTTPを1.12にアップデートしたところ、障害が発生するようになってしまいました。
AnHTTPを立ち上げて、ブラウザでローカルのテストを行った後、Windows98を終了させようとすると、
「helper.exeを終了させてください」と警告がでてしまうのです。Ctrl+ALt+Delでhelperかhttpdを強制終了させれば、後は問題ないのですが。
いろいろ試した結果は下記のような感じです。
・AnHTTPを立ち上げて、ブラウザでローカルアドレスにアクセス(httpdが動作する)した後、Windows98を終了させようとすると問題が発生。
・上記の際のアクセスページは、CGIを実行させるページだろうが単なるHTMLのみのページだろうが関係なく問題が発生。
・AnHTTPを立ち上げて、何もせずWindows98を終了させると問題なし。
・AnHTTP設定の一般にある、「ヘルパープロセス」のチェックをはずすと問題は発生しない。
・AnHTTPはVer1.12の全ての圧縮ファイルをダウンロードしてきて使用している。
ヘルパープロセスを使用しなけばいいので、これで使用しているのですが、
Windows98で、この設定でも問題はないのでしょうか?
長くなりまして申し訳ありませんがよろしくお願いします。
中田さん
>ふうせんさんの index.htm の話と、MASAさんの \\sunc\c の話はおおよそ解決できました。
>次のバージョンで直します。今週末の予定です。
すばやい対応ありがとうございます。お待ちしてます。
>kuriさん
特に気にすることもないんですけど、マシンの違いも解らないまま動かしちゃう人って
結構居たりするんです。あちこちの掲示板とかで見かける限りは平然と無茶なことを....
ちっと違いますけど、ここでもたまに出てくるのはPerlでintelとALPHA(だったかな?)
を間違えてインストールしてしまったり。自分のパソコン上でやっている分には何をしたっ
て良いんですけどね。さすがにWinとMacを間違える人は居ないんじゃないかと思いますけど
それでも中には居ることでしょう。
exeの件で気になったのは自分のパソコン上で動いたからプロバイダのサーバに乗っけ
ちゃおうと考えたりしないだろうなぁと思ってしまった訳です。UNIXサーバであればちゃ
んと識別してくれるのではないかと思いもしますけど動いてしまうかもしれません。その結
果サーバがダウンしてしまうかも知れませんし。AN HTTP Serverで自宅サーバを立ち
上げている人も多いと思いますが、プロバイダのサーバに載せる前のテスト環境として使
っている人も結構多いので可能性もあるかなと思ったわけです。初心者と書かれるとここに
来る人はそこそこ解っている人が多いのだろうなぁとは思いつつもどの程度初心者なのか心
配になったりしてしまいます。
それだけのことですが....
中田さん
>環境変数を表示するCGIで?をつけて直接実行した時、「表示されない」というのはどうなるので
>しょうか? 「CGI出力を検査」にチェックをいれた状態で、エラーメッセージは何でしょう
>か?
試行錯誤した結果、表示されました。こちらのプログラムミスだったようです。
お騒がせしました。
あと、GIFカウンタ表示させて、続けざまにリロードすると、「表示しています…」
のままフリーズすることがあるのですが、ざっと、どんなことが考えられるでしょうか?
ぴゅわ 様
うんまあそうですね
ちなみに僕んところはC言語関係はだめだとおもいます(て言うよりダメ)
よってに自分のパソコン位はって考えなんですが
なんか変なこと言ったかな
難しく考えないでください
ようはexeを動かしたいだけなんですねー
ただいま勉強中
ふうせんさんの index.htm の話と、MASAさんの \\sunc\c の話はおおよそ解決できました。
次のバージョンで直します。今週末の予定です。
RYUさん、
ちょっとわかりませんが、何かおかしいCGIがあるのだと思います。
Windows を再起動してその直後でも簡単なCGIが動かないでしょうか?
W さん、
hosts.sam では無効です。 hosts.sam を拡張子なしの hosts にリネームしてください。
UNIXで、
<!--#exec cmd="/usr/localc/bin/jperl foo.pl"-->
としなければいけないのなら、foo.pl の最初の行を
#!/usr/localc/bin/jperl
とすれば、
<!--#exec cmd="foo.pl"-->
でいくはずです。
もちろん foo.pl には実行権がついてないとだめですが。
AN HTTPDで、
<!--#exec cmd="foo.pl"-->
を動作させるのは、
「.pl, .cgi の実行プログラム」のところを jperl にすればいいはずです。
& の分解は、そうするつもりはなかったという意味ではバグですが、
#exec cmd で、& を引数で使うのはちょっと異様です。
タールさん、
「.pl, .cgi の実行プログラム」のところを perlのフルパス指定にしてもだめですか?
そちらが優先されるはずなのですが。
タコラキングさん、
環境変数を表示するCGIで?をつけて直接実行した時、「表示されない」というのはどうなるのでしょうか? 「CGI出力を検査」にチェックをいれた状態で、エラーメッセージは何でしょうか?
また画像出力の方は、Perlスクリプトですか?
UNIX用だとすると、画像データは binmode で出さないと画像が壊れます。
あと、ブラウザのキャッシュも一応気にはなりますが。。。
ぴゅあ様。ありがとうございました。
Hello! WORDが出ました。
PDドライブに再インストールしてd:\www\...でもやってみました。
掲示板もうまく動作しました。朝まで悩んでいたのがウソのようです。
次のステップへと頑張りたいと思います。
本当にありがとうございました!>かすいさん>ぴゅあさん>中田さん!(^O^)
皆さんのオカゲデ今日は眠れそうです・・・が、また眠れない夜がくると思うと・・・。
皆さんのアドバイスをもとに(過去のコメントも含め)一から基本通りにやってみた所、動きました。たびたびありがとうございます。
何が、何処で引っかかっていたのか今となっては?ですが(実はbbs.cgiの置き場所が違っていた・・ぁはずかしや・・)。
とりあえづ今までの疑問点はこれからクリア出来そうです・・・かな・・・?。また同じ書込みした祭にはゴメンナサイ。
と、言う事で私を含め初心者の皆さん、何処かでつまずいてしまったらまづ基本から、(こんなミスをするのは、私ぐらいだと思いますが、小さなミスが命取りになります)一からやり直して見るのも一つの手だと思います、そして過去のコメントも"チェック"ですよ。
またすぐに来ると思いますが失礼します。
睡眠不足は体に悪いですよ>ALL
誤字脱字、乱雑な文面で申し訳ありませんでした。
>ぴゅあさん
レスありがとうございます。(^^)
ともかく、ご指摘に従って見たんですけど結局駄目でした。
それ以降いろいろオプション設定を触って拡張子毎の実行プログラムを設定する項目で
拡張子の方にcgi、プログラムをインストールしたperlを登録してみたらあっさりと出来ました。
う〜む、この設定で良かったとはちょっと盲点でしたね。(^^;
となるとplの拡張子も同じように登録して置かなくちゃいけなさそうですね。
もう少しだと思うのですが。
Error 500
CGI エラー - Content-Type ヘッダがみつかりません。
CGI 出力メッセージ:
Unrecognized character \201 ignored at C:\httpd\yutasan\public_html\bbs\bbs.cgi line 305.
String found where operator expected at C:\httpd\yutasan\public_html\bbs\bbs.cgi line 305, near " print "--------------------------------------------------------------------------------\n""
(Missing operator before "--------------------------------------------------------------------------------\n"?)
syntax error at C:\httpd\yutasan\public_html\bbs\bbs.cgi line 305, next token ???
Execution of C:\httpd\yutasan\public_html\bbs\bbs.cgi aborted due to compilation errors.
-------------------------------------------------------------------------------- AnWeb/1.12
上記のエラーは"cgiスクリプトの誤り"、と、言うことだけで良いのですか。
bbs.cgiスクリプトについては、"自宅マシンwwwサーバ化計画"さんからダウンロードした物を使っています。
はじめまして
初心者なのですが質問があります。
いくつかCGIを動かしたら突然CGIが動かなくなってしまい。
ブラウザを見るとWEBページが見つかりました応答を待っています。
というのがずっと続きCGIのページが表示されなくなるのです。
そのあとWINDOWSを終了させようとするとシステムがビジー状態になって
終了させることができなくなってしまうのです。
Helperを終了させて下さいというメッセージが出ています。
それとperlを終了させて下さいというメッセージも出ています。
perlはPerlforWin32です。
CGIが間違っているのか、設定が間違っているのでしょうか
簡単なCGIまで動かなくなります。
どの様な対処法があるのでしょうか、お願いします。
こんにちは、しばらく使ってみて2、3気になることがあります。
D:/web/www.melcoinc.co.jp/ を http://www.melcoinc.co.jp/ にあてる...という
件ですが、ちょっと試してみたところうまくいきません。hostsのファイルというのは
C:/WINDOWS/hosts.sam でよいのでしょうか。私が何か勘違いしていて動かない可能性が
ある。
IE4よりもNetscapeのほうがずっと軽いよという件ですが、
<IMG SRC="http://.../*.gif"> とか
<IMG SRC="/icons/*.gif"> という記述があると
どちらも重いですね。ネットにつながっていないのだから探しに行く必要はない。
何かいい方法はないでしょうか。
AN HTTPの環境とアップ先のUNIX環境の違いについて。
現在のアップ先はperlのみを標準サポートしているらしくjperlを利用するには
<!--#exec cmd="/usr/localc/bin/jperl foo.pl"-->
などとフルパスで書く必要がある。単にperlでよいのなら
<!--#exec cmd="foo.pl"-->
と'perl'を省略することができる。
AN HTTPで困ったのは
<!--#exec cmd="jperl foo.pl"-->
とインストールした'jperl'を書かなければ動作しないということ。
何かコマンドを省略する方法はあるのだろうか。
perlをいれるかjperlをperlにコピーするかすればなにも問題はないのだけれど。
AN HTTPは便利な(不便利な?)ことに @ARGV を '&'で分解してくれる。
<A HREF="foo.html?a=melco&b=logitec">
という記述をそのままコピーして ($ENV{'QUERY_STRING'}の情報に$ARGV[0]を付加して)
<!--#exec cmd="jperl foo.pl a=melco&b=logitec">
とするとAN HTTPでは動いてしまう。
アップ先では "" の中はコマンドラインと同じく & が機能して
% jperl a=melco &
とバックグラウンドで動いてしまう。
UNIX環境でこの *.pl のまま使用するには
<!--#exec cmd="jperl foo.pl a=melco\&b=logitec">
と & を \& で置き換えてあげる必要がある。
こうするとやっぱり AN HTTP では動作しなくなる。
& で分割してくれるというのは一般的なのでしょうか。
まあ、$ARGV[0]を利用していたところを@ARGVに変えてどちらの環境でも動作するように
したので今はなにも問題ないですが。
>豊吉さん
httpd.exeと同じディレクトリに入れてあるということなので出るとすれば
"C:\httpd\bin\perl.exe C:\httpd\yutasan\public_html\bbs\bbs.cgi"
と出るのが正しいのだと思います(perl.exeはbinディレクトリに格納される筈なのでhttpd.exe
がC:\httpdディレクトリに入っているのであればC:\httpd\bin\perl.exeとなるでしょう)。
ひとつは私のbutanekoさん宛のレス(1999/03/04 08:34)を参照してAN HTTP Serverへの
Perl.exeのパスの設定内容を確認してみてください。C:\autoexec.batの環境変数PATHの設定
を確認してPerl.exeのパスがどうなっているかを見てみる(これに合わせる)のも手っ取り早
いでしょう。
もうひとつは"\usr\local\bin\perl"と出ていますが、これはPerlソースコードの1行目に
"#!/usr/local/bin/perl"と書いてあるのでしょう。同じプロパティシートの「#!の行を調べ
る」(今v1.10で確認していますがv1.12でも同じ或いは似ていると思います)のチェックボックス
がオフになっていることを確認してください。デフォルトではチェックが入っていなかった
と思います。
この2点を確認すれば少なくともPerl.exeに関する部分は解決することと思います。これ以
降出てくるエラーはCGIのソースコード内部のことになると思います。
おはようございます。!
かすいさん>ぴゅあさん>中田さん
お世話になってます。
一つ抜けてと思ったら"Error 500"にはまってます。(^_^;
CGI エラー - 以下のコマンドラインを実行できません : "\usr\local\bin\perl C:\httpd\yutasan\public_html\bbs\bbs.cgi "
.."Perl.exe"..と、でないのは、パスが通ってないという事なのでしょうか?。
(Win98 IE4.01 httpd V1.12)
Pw32i316はhttpd.exeと同じディレクトリに置いています。
うまいこと説明が伝わっていれば良いのですが・・・。
新参者をお許し下さい。
>タコラキングさん
自作なら....というのはまずAN HTTP Server/Perlでは特に設定などない筈ということか
らです。AN HTTP Serverの不具合ということもないのだと思いますが。
'<IMG SRC="*****.cgi?col=1>'という書き方に問題はなかった筈なのでPerlのソース
コードをチェックしてみてはどうでしょうか。尤も通常公開されているソースコードであれば自
分の環境に合わせるだけで動くレベルにできていると思いますが。
注:プラットフォームがWinの場合にはいくつかの関数などがそのままでは通らないということは
また別の話です。
本日0時頃のコメントの補足です。
まずはぴゅあさんのコメントより
>一つ考えられるのはプログラムの誤りだと思います(特に自作なら)。
>パラメータを指定しない場合はちゃんと表示されているということですよね?
ネット上で公開されているプログラムをmodifyして使っています。肝の部分は直して
おりません。カウンタgif画像はネット上に出回っているものならなんでもいいようです。
また、このプログラムでは、パラメータを指定しなければgifは表示されないように
なっているはずです。
自分なりに問題を切り離して解析してみたのですが、
?以降で引数を指定するところから問題が生じていると思います。
環境を補足すると、
AN HTTPDのVer1.12、PerlはPerl for Win32、OSはWindows98です。
よろしくお願いします。
>えむけいさん
まだちゃんと情報を得ていませんが、そこにもあるように技術に関することみたいです。とい
うのを何処だったかのイメージツールで見掛けたのでした。たぶん理由はそこに書かれているこ
とに近いのでしょう。オリジナルのGIFでも中をいぢると(一部のCGIソースではそのようなこ
とをやっていたり)問題あるのかなとか思って。ここで追求するような内容ではないですけど
CGIのソースを書く上で何か関係あることが出てこないのかなとか思ったり。
>butanekoさん
そのエラーの原因はもしやPerl.exeのパスを指定していないとか?
オプションメニューの一般の一般プロパティシートで(ちょっとv1.10で見ているんですけ
ど違いはないですよね?)Perl.exeのパスを指定してあるか確認してみてはどうでしょうか。
ちゃんと設定してあれば、"perl ..."ではなく"c:\perl\perl.exe ..."などの通知になって
いたと思います。この他のエラー500はCGIのソースコードに誤りがある場合などでしょう。
>タールさん
こちらの場合はbutanekoさんとは違いますね(更に先に進んだエラー)。
全く同じと思われるエラーがNariさん(1999/02/26 14:33)で出ていると思います。
σ(^ー^)は発生したことかないので正確には判りませんが中田さんのレス(1999/02/26 21:38)
も参考にしてみては?
printだけでも駄目というのはContent-Typeを出力していないからかなとか思ったり。
前にもレスしましたけど、AN HTTP Server上で動かなかったらDOS窓で出力が期待通りに出
ているか確認してみるのが一番なのでしょう。CGIソースの名前から(改名していなければ)自
作のものだと思うのですけど、フリーで公開されているものなら何処の何であるかも載せてもら
えればある程度確認材料にはなります。
と、言いつつもσ(^ー^)は今は時間がありませんけど。
きっと15日を過ぎれば再びCGIをいぢる時間が出来るものと期待しつつ....
なかなか時間が作れない自分が哀しい....
初めまして、タールと言います。
CGIを使ったHPのテストとしてこちらのサーバを使わせて貰ってます。
そこで問題が発生し、どのようにいじくっても問題が解決されません。
その問題はなにかと言うと
Error 500
CGI エラー - 以下のコマンドラインを実行できません : "d:\cgi\httpd112\perl\bin\perl.exe D:\CGI\httpd112\home\hello.cgi ", errorcode = 32, Broken pipe
という物です。
ちなみにAN HTTPDのVer1.12を使い、PerlはPerl Win32 Intel 3.16を使っています。
普通のHTMLならちゃんと見ることが出来るんですが、CGIを実行するとどうしても上に書いたようなエラーメッセージが出ます。
Perlの文法的な物が間違ってるのかもしれないのでprint文だけを使う簡単なプログラム
を走らせてみましたが、結果は同じでした。
だからPerl関係の設定のどこかがおかしいと言うことだけは分かるんですが・・・。
もし、解決の糸口になりそうな事があるのなら教えてくれませんでしょうか?
どうかお願いします。
>#確か、GIF画像って著作権がらみで自由に加工できないとか?
>#実際のところどういう状況なのでしょう>ご存知の方
別にGIFじゃなくても著作権がらみで自由に加工できない画像はそりゃあると思いますが(他人の描いた絵とか)、UNISYSが取得しているLZW圧縮技術の特許がらみのことでしょうか?
とりあえず「GIFとPNGについて」とか参考になりますか?
はじめまして。私も超初心者です。
そしてError 500でドツボにはまってます。
エラーメッセージには次のように書かれてます。
Error 500
CGI エラー - 以下のコマンドラインを実行できません : "perl c:\www\butaneko\public_html\hello.cgi "
OSはWindows98です。
ご助言お願い申しあげます。
きっと誰かが(σ(^ー^)より)適切な回答を出してくれると思っておいておきましたが....
>kuriさん
張り付けるというのはHTML文書から呼び出すということですよね?
それをやろうとしているのは自分のパソコン(AN HTTP Server)上に限ってですよね?
ちょっと気になったので....
最近、気になり過ぎ?(^_^;)
最近、本当の素人ばかりが集まる掲示板を覗いている所為だろうか....
>豊吉さん
それ自身の出している意味は調べていないので不明ですが、CGIのコードが間違っているとい
うことはないのでしょうか?
正しく実行できない為にエラーが通知されているようにも思われます。
一応、errors.logを見るようにと通知されているようにも思いますが....
ISAPIが呼び出させていない為にAN HTTP Serverが返しているのかと思いましたけど、中田
さんからのレスもないようなので、たぶんそうではないのでしょう。
簡単なコードを書いて動くようだったら、そのCGIソースコードをチェックしてみては?
と思ったら中田さんからのレスがありました(^_^;)。
折角書いたので何か他の例での参考になればということで、残しておきます。
って、参考になるようなことかな?(^^ゞ
>helloさん
エラー500は色々な原因があるでしょうけど、CGIが正常に動かない(プログラムミスなど)
でも発生します。DOS窓でPerl.exeを直接動かせばある程度原因が見つけられるかもしれませ
ん。このエラーが出た時はこの方法を取るのがベストだと思います。σ(^ー^)もたまに単純な
ミスによりそういうこともあります。
>ふうせんさん
書かれているURLのページのことですよね。
一応ざっと目を通した限りでは問題はなさそうでした。
実際にAN HTTP Serverを通すと何か出てくるのかもしれませんが。
もしまだ解決されていないようでしたら後日もう一度見てみますけど。
>タコラキングさん
一つ考えられるのはプログラムの誤りだと思います(特に自作なら)。
パラメータを指定しない場合はちゃんと表示されているということですよね?
だとするとパラメータが指定されたときの処理に問題があるのだと思うのですが。
パラメータを指定しない時というのがGIF画像を使っているものでないのならGIF画像の出力の
仕方に問題があったりするのではないでしょうか。
#確か、GIF画像って著作権がらみで自由に加工できないとか?
#実際のところどういう状況なのでしょう>ご存知の方
はじめまして。CGI&httpd初心者です。
httpdで自分のパソコンをサーバにして、CGIの動作確認をしております。
<IMG>タグで一桁ごとに表示するアクセスカウンタで、<IMG SRC="*****.cgi?col=1>などと、
(CGIプログラム名)?のあとに位取りなどの引数を指定している場合が多いのですが、
実行したところ、カウンタgifが表示されません。パスを確認しても正確です。
試しに、単に環境変数を表示するCGIを作って直接ブラウザ上で実行したところ、
*****.cgiだけなら正常に表示されますが、後に?(引数の式)をつけた途端に表示されなく
なってしまいました。
何かhttpd上あるいはPerlなどの設定が必要なのでしょうか?
ブラウザはIE4.0です。
初歩的な質問かもしれませんが、よろしくお願いします。
>かすいさん>ぴゅあさん>中田さん
どうもありがとうございます。§^。^§
多くの方からのご教授、大変感激しております。
本日、perl の入門・応用書を多量に買込みました。(今までにない経験です。)
Unix 等にも疎いので、初歩から学習することにしました。
ご教授頂いた内容は、早速、コード化させて頂きました。(テストはまだ)
今後とも、宜しくお願い致します。
豊吉さん、
オプション/一般の一番下の「.pl, .cgi を PerlIS.dll で実行」のチェックをはずしてもらえばよいと思います。
後藤さんへ追加。
<!--#exec cmd="./scripts/test.cgi code=5"-->
か
<!--#exec cgi="./scripts/test.cgi?code=5"-->
ということになると思います。
#exec cmd の場合は、"..." はコマンドラインで、スペースの後の引数が @ARGV にはいります。
#exec cgi では、"..." はURLで、?以下が @ARGV と QUERY_STRING にはいります。
あー、なんか焦って、書込む前に読み返すの忘れてました。日本語が変ですね。(^^;;
>新しい窓勝手に開くのではなく、ページ表示等に勝手に小さな窓(リモコンや広告とか)を
新しい窓を勝手に開くのではなく、ページ表示時等に勝手に小さな窓(リモコンや広告とか)を
kuriさんへ追加>
「バシバシ窓がひらいてく要領」とうのは、リンク(フォームとかでもいいわけですが)で
新しい窓勝手に開くのではなく、ページ表示等に勝手に小さな窓(リモコンや広告とか)を
開くことでしょうか?それなら、targetではなく、JavaScriptということになります。
open()関数というのがありますので、JavaScriptの解説サイト等を覗いて見てください。
# あれこれやってから、ここに書込みしてるうちに、テレホ・タイムでもないのに、
接続して、もう2時間近いので、これでごめんなさい。(^^;;
# 中田さんへ>
# すみません、間違って、Aタグを使ってしまいました。
# 下の書込みは、削除してくださいませ。m(. .)m
TAKUさん>
うーん、ISAPIでお使いでしょうか?
それなら、オプションのダイアログを開いて、下より少し上にタイムアウトする
時間を指定できるようになっていますが……。
helloさん>
Error 500は、おおよそCGIの出力がおかしい時に出てくるものです。
何か、メッセージは書かれていませんでしたか?
「Content-Typeヘッダがありません」とか、「標準出力に何も出力
されていません」とか、とか……。
それにより、回答が変わってしまいます。(^^;;
ちなみに、よくあるのは、「Content-Type」だと思いますが、CGIでは、
何よりまず、出力するのがHTMLであれば(基本的には)、
print "Content-Type: text/html\n\n";
また、テキストであれば、
print "Content-Type: text/plain\n\n";
等々といった、データを書き出してあげないといけません。
豊吉さん>
ごめんなさい、わかりません。(^^;;
kuriさん>
「ページにはりつける」とは、どのようなことをさされているのでしょうか?
CGIのようにするには、EXEでも、拡張子を「*.cgi」に変更すれば動きます。
もちろん、CGIと同様に「Content-Type」等のヘッダをつけないければなりません。
また、SSI(ページに結果を生め込む)であれば、EXEのままでも可能です。
あと、「バシバシ窓がひらいてく要領」というのは、リンクをクリックすると、
ブラウザの窓が増える動作を指されているのでしょうか?
これは、サーバは全く関係ありません。HTMLの範疇です。(^^;;
基本的に、<a href="test.hml" target="*">といった書き方です。
その「*」のところを、「_blank」にすれば、新しい窓で「test.html」が
開かれます。
# ちなみに、この指定はフレームを使われるようになると必須になって
きます。
ふうせんさん>
表示がおかしくなるってことでしたよね……原因は良く分かりませんが、
html自体だけ少し見させていただきましたが、HTML的にわりとまずい所を
1個所だけ。
「Q&A」の「&」です。全角文字にするか、半角で「&amp;」と
しなければなりません。「&」は、HTMLでは、特殊な記号なんです。
「&keyword;」という形式で、特殊な記号を埋め込むための
特別な意味を持つ文字になっているからです。
これは原因ではないと思いますが……。(^^;;
>ふうせんさん
http://www3.mits-unet.ocn.ne.jp/testfile/
http://www4.mits-unet.ocn.ne.jp/testfile/
にAN-HTTPDでそのURLのHTMLを置いてみましたがどうも問題はないようです。
ちなみにうちの環境は
www3サーバの方はNT4ワークステーション、
www4サーバはWIN95OSR2です。
先日データを検索するCGIを作ってみました。
が、データの量が多いと検索が終了する前にタイムアウトになってしまい最後まで動いてくれない事があります。
タイムアウトしないように出来ないんでしょうか?
ネット上では必要な処理ですが、ローカルでやるぶんにはいくら負荷がかかっても誰にも迷惑かけないんですけどね。(^^)
オフラインでcgiを動かそうとしたら500番のエラーが出ました。修復方法を教えてください。
はじめまして。
"ISAPI Error" Internal Error. See "errors.log".
と、出てしまいます"Perl"のパスは通っていると、思われますが?。
教えてください。
まだ初心者ですがC言語の知識があったのでカウントダウンするプログラムを作りました
もちろんexeファイルなのですがこれをページにはりつける何て事は出来ないんですか
またはよくネットであるところにはありますがバシバシ窓がひらいてく要領で出来ませんか
あれはどうやってるのかなー
どうも、ふうせんです。
反応頂き、ありがとうございます。
中脇さん:
一応使用しているファイルを公開しているアドレスを公開しておきます。
http://w32.mtci.ne.jp/~fu-sen/
http://a1.st/madobe/
などです。
ここを見れば分かりますが、JavaScript は用いていません。
また、直接アドレス指定では表示できています。
環境は Windows98x2 です。
これまでのバージョンで問題なく動作しており、(1.0x)
1.12 に変えたとたんに動かなくなったので……。
宜しくお願いします。
p.s.
ああ、そういえば、</BODY> と </HTML> の間に <!-- --> のコメントをいれると
< が表示される不都合があったような……。解決済みでしょうか?
>後藤さん
も少し解り易いかも?しれない補足
cmd="..."に書かれているのはcmdというキーワードでも判る?ようにコマンドラインという
ことになります。即ち手でコマンドを打っているのと同じことと考えることも出来るでしょう。
.../aaa.cgi?key=dataのようにURLで書いた時はkey=data以降が取り出されてパラメータとし
て渡されるのでその方法で取り出せます(ちっと細かいところを引っ張り出すのが面倒なので手
抜き(^^ゞ いつもは別ウィンドウを開いているので参照しながら書いているのですが今の環境
ではちょっとメンドイので)。
しかし、cmd="..."の場合にはコマンドラインに書いたのと同じ扱いになるので.../aaa.cgi key=data
のようにしてargumentとして取り出すことになるということです。
これで少しは違いが理解できて、どうすれば良いのかが解るのでは?
なお、渡すパラメータの部分は可変にしても良いでしょうけどコマンド(aaa.cgi)の部分は固
定にしておかないといけないでしょう。何故かはその筋の解説を読んでいれば解っていますよね。
後藤さん>
「(HTTPの)URL」は、普通、「(http://host(:port)/)path/cgi?query」という感じ
の形式になりますが、「exec cmd="*"」に指定するのは「URL」ではありません。(^^;;
しかも、実行されるのは「CGI」というウェブに特化されたものではなく、位置づけ的
には何ら普通の「コマンド」なのです。
それだから、cgi-lib.pl 等の CGI 処理支援系ライブラリは役に立ちません。(^^;;
また、普通、「SSI」というのは、HTMLから呼び出すスクリプトのことではなく、
その名の通り「Server Side Include」、つまり、「コマンドの出力を埋め込む仕組み」
にすぎないので、「exec cmd="*"」に書くのは、あくまで標準出力に結果を表示する
(HTML記述の補助用に最適化されていても)「コマンド」であって、それからも、明らかに
「SSI=スクリプト」という関係にはありません。
従って、「?」を半角スペースに置き換えるべきです。
そうすると、配列「@ARGV」にコマンドの引数として格納されます。
というわけで、CGIとSSIとでは、基本的に別々のスクリプトを用意することが必要と
なります。もちろん、実行時の環境変数の状況の違いなどから自動判別してやれば、
1つのスクリプトですますこともで来ます。(^^)
--------
蛇足ですが……CGIの場合も、環境変数「QUERY_STRING」に「?」以降が入るとともに、
「+」で分解されて @ARGV に入ります。
# ただ、その時、AN HTTPD では、「&」でも分解してくれるようです。
過日メールにてお世話になりました後藤です。
また不明な点がでてきまして、こんどはこちらに投稿させて頂きます。
【ジャンル】SSI
【不明な点】
・「<!--#exec cmd=""-->」のタグで、パラメータの設定はできないのでしょうか?
例〕
<!--#exec cmd="./scripts/test.cgi?code=5"-->
上記では、スクリプトの存在を認識できない。(コマンドまたはファイル名が違います.)
そこで、
<!--#exec cmd="./scripts/test.cgi ?code=5"-->
とすると、スクリプトは実行されるものの、cgi-lib.pl の &ReadParse で値が取得でき
ない様です。何故でしょう?( Unixでも同じかなぁ? )
必要であれば、後程、スクリプトをメール添付で送ります。
ご教授、宜しくお願い致します。
以上。
ActivePerlに付属のActivePerl FAQでは、"(Windowsで)メールを送るにはどうしたらいいか?"というのがあります。
UNIXの sendmailを使った例をあげて、それを見た人は 「Windowsで使える sendmail はどこにあるのか?」ということになるのが通例、と書いてあります。
答えは、まずは Perl で use Net::SMTP で簡単に送れる、というものです。スクリプトの例もあります。
続いて、どうしても sendmailの代わりが欲しいなら、ということで、
Blat, sendmail(Microsoftのポートなど), wrmail を挙げています。
UNIXでも Perl で SMTPサーバの ポート25に connect して、HELO, MAIL, RCPT, ... としてやれば Perl でメールを送ることは難しいことではないと思います。
(私はやってみてはいませんが)
Windows での sendmail 代替品は、gbook.18.htm, gbook.16.htm に各種でてきます。各ページを "sendmail" でページ内検索をしてみてください。
個人的には、Windmailよりも、上にもでてきた Blat を日本語にした BLATJ が(シンプルで、かつフリーなので)おすすめのように思います。
★WindMailについて
どこのプロバイダでも使えるというのは問題あるのでは?と気になりましたので。
少なくともWinMailのプラットフォームはWinの筈。UNIXではちゃんとはじいてくれるのだと思
いますが(Linuxなどの場合はどうなのだろうか....86系CPUは機能的にも不安は残るが....
注:σ(^ー^)的に。WinNTサーバは?)。
また、通常のプロバイダではスクリプトを書くこと、直接サーバでコンパイルしたものを
動かすことは認めていますけど、常識とされているのか実行形式で持ってくるのは許されてい
ない?のかなと思ったり。でもflyは動かしているんですよね?たぶん。
いずれにしてもバイナリで動くものは手元にソースコードを持って自分で対応できるものに
するべきなのでしょう。なんでもやって良いと言っても自分で対応できないものは動かすべき
ではないのでは?
動かす場合はプラットフォームに十分に注意する必要はあるのでしょう。たぶん。パソコン上
でも間違えるくらいなのですから。
と、ちょっと思ってみたり....
って前にも同じ内容があったような?
試してはいませんけど(サイト上でオプションの解説をざっと見ただけ)基本的にはsendmail
の置き換えとして使えるのでしょう。sendmailを使っているソースコードを参考にしてオプション
の調整をしてみては?
中田様へ...puff Windmailの件です
windmail -n test.txt puff@puff.to が動作していました・・
なんとも・ありがとうございます・
問題の呼び出しについては・FormMailを参考にして、もう一度
トライしてみます・・
CGI関係にはあまり詳しくないものでして・・(^^;
ついでに・・英語も・・
でも、Windmail..結構使えると思います・・Sendmailを解放してない
サイトには、もってこいのソフトだと・・
では・・何かアドバイスがありましたらお願いします・・ from puff
中田さん>
≫私も Windows95 で ActivePerl の PerlIS.dll のエラーは出ています。
≫WindowsNT4.0 ではエラーは出ません。
なるほど、そうですか。(^^;;
≫PerlIS.dll では、たとえば advapi32.dll の ReportEvent など NT固有の関数をインポートしています。それを実行
≫されると httpdごと落ちることは考えられます。
あ、ほんとですね……いろいろ、NT固有の関数が。(^^;;
≫perlのパスなどのバーチャルホスト単位の設定は考えてはいます。
ありがとうございます。(^^)
かすいさん、
私も Windows95 で ActivePerl の PerlIS.dll のエラーは出ています。
WindowsNT4.0 ではエラーは出ません。
とりあえず、ActivePerl では perl.exe をお使い下さい。
少し調べた範囲では、
PerlIS.dll では、たとえば advapi32.dll の ReportEvent など NT固有の関数をインポートしています。それを実行されると httpdごと落ちることは考えられます。
もう少しソースも含めて調べてみないとなんとも言えませんが。。
perlのパスなどのバーチャルホスト単位の設定は考えてはいます。
puff さん、
Windmail の設定の話ではないような気もしますね。
SMTPサーバと自分のメールアドレスが設定されていれば Windmail.exe は動くようです。
DOSプロンプトで、windmail -n test.txt puff@puff.to が動作していますか?
動作しないとしたら、その時のログはどうなっているでしょうか?
詳細なデバッグログをだすこともできるようですがそれもやってみましたか?
上のような windmail の基本動作はちゃんとしているとしたら、それから先は windmailの呼び出し方の問題だと思います。
しのっちさん、
そうですね。パスもそうですが、IPアドレスの入力も一行編集だとやりにくいという話もあるので対応を考えます。
パスの方は、エイリアス単位で設定できるようにするということになると思います。
わさび醤油さん、
サーバプログラムはサーバとしか呼びようはないように思います。
簡単に止まってはもちろん困りますが、どの程度を「簡単に」と呼ぶかは人それぞれでしょう。
本というとちょっと困りますね。
私がもっているのは、Windows関係では、以下の3冊くらいです。
Kris Jamsa/Ken Cope 「インターネットプログラミング」 翔永社 1995 ISBN4-88135-305-5
Lewis Napper 「Winsock 2.0 プログラミング」 ソフトバンク 1998 ISBN4-7973-0688-2
Paul S. Hethmon 「HTTP詳説」 プレンティスホール 1998 ISBN4-89471-041-2
inagaki さん、
IMEのツールバーの表示の有無は関係しないでしょうか?
これまで、ActiveWareの Perl for Win32を使っていましたが、
バージョンが足りなくて、lib-www.plのPerl5版が使えなくて
バージョンの足りる同じActiveWareのActivePerlを入れてみた
のですが……ちゃんとパスも通ってるのに、レジストリをいじる
まで、Perl for Win32のPerlISが動いてい、びっくりしました。(^^;;
いや、それはあまり関係ないのですが……そのActivePerlの
PerlISです。なぜか、不正な処理で終了しますダイアログが出て
しまいます。簡単なCGIなら、何故か、httpdは動き続けますが、
重いCGIだとhttpdは落ちてしまいます。
PerlIS.DLLのページ違反みたいですなのですが……。
(Perl for Win32のPerlIS.DLLでは起こりません)
こういう現象、起こっている方いらっしゃいますか??(^^;;
もちろん、perl.exeなら、ちゃんと動きます。
--------
そもそも、Another HTML-lintを使おうとしたわけですが、去年は、
しばらく、AN httpdから、ちゃんと動いていたのですが、バージョン
アップしてるうちに、URLからの取得とか、うまくできなくなって
使ってなかったのですが、最近、HTML書きばかりやってて必要性に
迫られて、最新のにバージョンアップしたのですが、やっぱり標準の
取得ルーチンではうまく動かないみたいで、かといって、lib-www.plは
Perl for Win32ではバージョンが足りなくて、ActivePerl(これの場合
lib-www.plは同梱されます)に乗り換えたと。
で、Another HTML-lintのうちでの動作状況は……
<ローカルファイルを指定>
○ Perl for Win32 / perl.exe
○ Perl for Win32 / PerlIS
○ ActivePerl / perl.exe
× ActivePerl / PerlIS
<URLを指定>
× Perl for Win32 / perl.exe
× Perl for Win32 / PerlIS
○ ActivePerl / perl.exe
× ActivePerl / PerlIS
といった、状況です。(^^;;
--------
しかし……今、レジストリの、/binのパスをPerl for Win32側、
/libのパスをActivePerl側という、あべこべな設定になってます。
楽するには、レジストリをボタンひとつで置き換えてくれるような
ソフトでも作らないとかな……すぐできるだろうけど。(^^;;
--------
あと、優先度の低い要望です……perlのパスや、PerlISとかについても、
バーチャルホストそれぞれに独立してたら、(個人的には)良い感じかもと
思います。(^^;;
もちろん、通常の使い方の範囲では独立してない方が設定が楽だし、
わかりやすいとは思いますが……。
m(^o^)m なんどもすみません・・
windmailの設定ですが・・
中田氏いわく・・SMTPサーバの設定だけではないかと・・
なんか、違うみたいです・色々やってみましたが・なんとも・・
どなたか、windmailを設定された方がおりましたら・・ヘルプ !!
from puff
パーソナルユースのサーバとしては非常に素晴らしく、愛用させてもらってます。
ただ、アクセス制御で、パスが一つしか設定できないのが残念です。
たとえば、http://@@@@/~user は、
120.0.0.* はアクセス拒否で、210.*.*.*はアクセス許可
さらに、http://@@@@/~co は、120.0.0.* はアクセス許可
といった具合です。
>中田さん
レスありがとうございます。
ごめんなさい、簡単な送信先の間違えでした(^^;
cgiではなくhtmlに送っていました(汗)
「POSTはこのサーバでは使えません」と出たのでつい書いてしまいました(大汗)
すみませんでしたm(_ _)m
>さきさん
「cgi-binのみに」というのは「cgi-bin以下に」というのではないのですね?
だとすればCGIごとに名前を決めて分類するくらいしかないんでしょうね。
>わさび醤油さん
サーバ/クライアントという例の一つにFreeConnectというフリーソフトがあります。
しかし、VC++でかつMFCを使っているのでσ(^ー^)にはちょっと重荷に感じてはいますが。
SuperRAS/KimonoRASからかなり機能が上がっているのでMFCに馴染んでないとかなり読むの
は大変だと思いますが、誰かに解説してもらいたいと思ったりもしてます。
あとDelphiであればサーバソースとかも転がってましたね。
検索エンジンで「WinSock」や「Visual C」などで検索するといくつも出てくるでしょう。
読んで解るという本を探すのは最近の傾向としてかなり努力しないと難しいのかもしれませ
んね。
ぴゅあさん、えむけいさん、中田昭雄さんレスありがとうございました。
あとで、考えるとかなり、かなり未熟な質問と気付きました。
それでも、アドバイスありがとうございました。おかげで、解決しました。
原因は、CGIなどは、ミルトサーバで定められたcgi-binディレクトリにのみ設置できるということでした。(注意書きをちゃんと読んでいない私のミスでした)
すいません。ここでもう一つ質問があります。
このように、cgi-binのみに設置できるというサーバは、よそでもあると思いますが、もう一つCGIのチャットを設置したり、掲示板を設置しようかと思ったとき、cgi-binの中に全部のプログラムを入れたら、かなり混雑します。良い整理法はないでしょうか?