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も、にたよう感じで正しく動きません。
どなたか分かる人お願いします。
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に限らず。
とりあえず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
これはCGIとして、Webサーバーが認識してないからですね。
他のが動いたのは、CGIを /cgi-bin/ 以下に設置したからではないでしょうか。
CGIにするのはOSやWebサーバーによって設定が違うので、
何を使ってるのか言っていただけると…
#他にwwwchat.cgi を cgi-bin に移動するって手もあるけど…
> なぜか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はなくても動きました,ただそれでは郵送はできないとおもいますが)
自分の所でやってみました(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が動いてチャットが動かなかったのは、さだひろさんが書かれているような理由
だと思います。
どうもありがとうございました。
[[解決]]
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を書き換えずに相対パスのままでもいけます.
解決したところで改めて補足しますと,方法は2つあると思います.
@さんのなされたように絶対パスに書きかえるのが1つです.
もう1つは,<a href="http://127.0.0.1/xxx/wwwchatx.htm">チャット(ローカル)</a>のように呼び出します.後者だと,wwwchat(x|y).htmを書き換えずに相対パスのままでもいけます.