wwwchat.cgiをPCでためすには?

[上に] [前に] [次に]
2000/03/02(木) 06:43:57
CGIの勉強しようとこのHPにあるCGIを自分のPCで試すことが
できるようにしたつもりでしたが、ラウンジ、掲示板はちゃんと
う動くのにチャットとメールがおかしくなってしまいます。
wwwchatでは
wwwchatx.htmを表させようとすると上半分(wwwchaty.htm)だけ
が表示されて、なぜかwww.chat.cgiをダウンロードしようとポップ
アップが出てきます。それで下半分は「取り消されたアクション」
というおなじみの「Web ページにリンクできませんでした」メッセージ
が出ています。
ちなみに、送信ボタンを押すとれいのポップアップがまたwwwchat.cgi
をダウンロードするか聞いてきます。
すべて手順にそったつもりだったのですが、なにか見おとしたので
しょうか?
wwwmail.cgiも、にたよう感じで正しく動きません。
どなたか分かる人お願いします。

seltza 2000/03/02(木) 09:58:20
とりあえずCGIは動作されているようですので、ローカルサーバー構築の話はパス。

で、おそらくWindows or Macintosh でperlをご使用されているものとして以下アドバイス。
#はずしたらごめんなさい。

とほほさんのところで公開されているサンプルCGIもそうかもしれませんが、webなどで公開されているCGI(perl)のソースは
unix系OSで動作させることを前提に(というかそこまで考えられてない作者もいるのかな?)作られている場合があります。

例えばActivePerlでは、シグナル系やフォーク系の関数は使用できません。詳しくはperl for win32のfaq、たしか第5章だったかと。
perlのインストールされたフォルダ以下にドキュメントが存在しているはず。

よくCGIで使用されているファイルロックのための flock()、これもwin95(/98?)では使えないと言ってもいいです。

あとシステムコール系。system()関数や``(バッククォート演算子)が使用されている場合は、
OS依存する場合がほっとんどです。(--;

wwwmail.cgi はsendmail を使用されていたと思いますので、同等の機能を果たすプログラムに変更されるか、
またはperlで自分で書いちゃう or モジュールを利用する、という修正が必要かと。
#テストで本当にメール送っちゃうのは それはそれで別問題ですけど。

この辺チェックなさってみてはどうでしょう?
#とほほさんのCGIに限らず。

無責任官庁 2000/03/02(木) 12:01:06
> なぜかwww.chat.cgiをダウンロードしようとポップアップが出てきます。

これはCGIとして、Webサーバーが認識してないからですね。
他のが動いたのは、CGIを /cgi-bin/ 以下に設置したからではないでしょうか。

CGIにするのはOSやWebサーバーによって設定が違うので、
何を使ってるのか言っていただけると…

#他にwwwchat.cgi を cgi-bin に移動するって手もあるけど…

さだひろ [E-Mail] [HomePage] 2000/03/02(木) 15:47:52
自分の所でやってみました(win98,Perl5,httpd123b).
どういう場合にそのような症状が出たかから想像するに,
CGIがhttp://localhost/xxx/wwwchat.cgiとして呼び出されていないのではないでしょうか?
直接wwwchatx.htmやwwwmail.htmをブラウザで開くと,
windowsの場合例えば,C:\homepage\wwwchatx.htmというアドレスになって,そこからCGIを呼ぶと相対パスで記述されていますから,C:\homepage\wwwchat.cgiとして呼ばれます.それでは動きません.
ラウンジ、掲示板はCGIしかないからlocalhostのパスを通してあるとおもいますが,たぶんこういうことではなかったのでしょうか?
(なおsendmailはなくても動きました,ただそれでは郵送はできないとおもいますが)

2000/03/02(木) 19:22:07
[[解決]]
seltzaさん,無責任官庁さん,さだひろさんレスどうもありがとうご
ざいます。
初心者なので難しいことは分からなかったのですが、皆さんのレスを
読んでwwwchatx.htmでwwwchat.cgiの呼び方がまずかったようです。
wwwchatx.htmで
<FRAME SRC="wwwchaty.htm" NAME=frame1>
<FRAME SRC="wwwchat.cgi" NAME=frame2>
となっていてちゃんとwwwchaty.htmが呼ばれていたのでwwwchat.cgi
も同じフォルダにあるのでこれで良いと思っていたところ、それが間違って
いたみたいです。ここを
<FRAME SRC="wwwchaty.htm" NAME=frame1>
<FRAME SRC="http://127.0.0.1/xxx/wwwchat.cgi" NAME=frame2>
(xxxはフォルダのパス)
に変更したらちゃんと表示できました。
wwwchaty.htmにも
<FORM NAME="form1" METHOD=POST TARGET="frame2" ACTION="wwwchat.cgi">
というところがありこれを
<FORM NAME="form1" METHOD=POST TARGET="frame2" ACTION="http://127.0.0.1/xxx/wwwchat.cgi">
としたところ、ちゃんと動きました。
他のCGIが動いてチャットが動かなかったのは、さだひろさんが書かれているような理由
だと思います。
どうもありがとうございました。

さだひろ 2000/03/02(木) 21:48:10
解決したところで改めて補足しますと,方法は2つあると思います.
@さんのなされたように絶対パスに書きかえるのが1つです.
もう1つは,<a href="http://127.0.0.1/xxx/wwwchatx.htm">チャット(ローカル)</a>のように呼び出します.後者だと,wwwchat(x|y).htmを書き換えずに相対パスのままでもいけます.

[上に] [前に] [次に]