View Full Version : 自作掲示板を設置してみたのですが
namatamago
2001/11/17, 12:19 PM
はじめて質問させていただきます。
自作の掲示板を、他のサーバーでは問題なく動いていたので、こちらでも試してみようと設置してみたのですが、新しく発言しようとすると、
cgi-lib.pl: Unknown Content-type:
というメッセージが出てしまいます。
これはどういう意味でしょうか?どう対処すればいいでしょうか?
http://namatamago.s6.xrea.com/suna/suna_hyouji.cgi
↑これです。
どうぞよろしくお願いいたします。
usopion
2001/11/18, 12:11 AM
不具合の出るCGIのソースを公示した方が
レスがつと思いますよ。
.txtファイルにして添付ファイルにするか、
サーバにアップするかしてみてはいかがでしょう。
namatamago
2001/11/18, 10:26 AM
usopionさん、レスをありがとうございます。
ソース、ファイルがいくつもあるのですが、どう添付したものやら。。。分からないので、
http://homepage2.nifty.com/k-r-m-/korima/suna/bbs_suna.html
↑ここから、ソースをダウンロードできますし、ニフティに設置した(ちゃんと動く)同じ掲示板へ行けます。(エクスリアの方は下のフレームに広告が出ないようにしてあるだけです)
無知丸出しという感じがして恥ずかしいのですが、なにとぞ宜しくお願いします>みなさん
usopion
2001/11/18, 04:11 PM
ほいほい。では落としてっと・・・
って、.hqxって・・・
Mac使いなんですか?^^;;;
解凍するのに一苦労ですよ・・・
で、まず
cgi-lib.pl: Unknown Content-type:
というのはcgi-libのエラーメッセージですね。
「入力データのMIMEタイプが認識でけへんよ」と言ってるようであります。
なんでこうなるのか解りませんが、ローカルや
私の鯖で試したところ、このような物は出なかったので
根本的な要因ではなさそうです。
で、うちで試験したところ正常には(?)動作しなかった物の、
書き込みは出来ました。
namatamagoさんのところは書き込みすら行なわれていないようなので、
データファイルの設定に問題があると思われます。
パーミッションやディレクトリ指定は大丈夫ですか?
で、あとなんとなく
top.location="$url1"+"suna_hyouji.cgi?ban=$banngou";
この辺を普通のリンクにしてみてはいかがでしょう。
xreaの場合、cgiを短い間隔で呼び出すと
異常な動作をすることがある(ような季がする)ので、
同じlocationを使うにしてもタイマーを使って
時間をおいてから呼び出すとかどうでしょう?
require "cgi-lib.pl"; *.pl にあるコイツが悪さをしているような気がします。当該行を消して試してみたらどうなるでしょう?
ところで、hqx 形式や sit 形式などでアーカイブされると、Microsoft Windows な端末や unix な端末を使っている人にとってはあまり嬉しくありません。 わたくし、このために Alladin Expander を新規インストールしました。 最低限 zip 形式か lzh 形式、余裕があれば tar 形式でアーカイブしたものも用意していただけると親切です。
Windows 環境向けに、zip 形式でフォルダごと固めたファイルを添付しておきます。追試などにお役立てください。
namatamago
2001/11/18, 05:22 PM
usopionさん、Kohさん
はい。Macを使っています。他の機種のことはさっぱり分かりませんで。。。お手数をおかけして済みません(大汗)あ、lzh 形式になら圧縮出来るかな。。。
cgi-lib.plの怪しいところをコメントアウトして試してみましたが、エラーメッセージが出ないだけで書き込みできませんでした。
さらに、いろいろ試してみます。
まず、前回の書き込みについて訂正。Originally posted by Koh
require "cgi-lib.pl"; *.pl にあるコイツが悪さをしているような気がします。当該行を消して試してみたらどうなるでしょう?「*.pl」は「*.cgi」の誤記です。すなわち、cgi-lib.plを呼び出さなくても動くんじゃないかという推測だったんですが、外れみたいですね。
とすると、やっぱりうそぴょんさんご指摘のパーミッション絡みでしょうか。試しに、各ディレクトリ・ファイルのパーミッションを XREA.com サーバ仕様文書 (http://www.xrea.com/jp/spec.shtm) の『CGI/SSI: 実行パーミッション』に記された値にしてみてください。
ファイルアーカイブの形式の件。
hqx や sit は、ほとんど MacOS ローカルな形式と思って間違いないでしょう。これらを他の OS で扱うためのツールは皆無です。
ちょっと探してみたところ、hqx や sit 以外の形式でアーカイブする MacOS 向けツールには、以下の3種があるようです。 MacLHA (http://hp.vector.co.jp/authors/VA008909/software.html) (無料: lha)
ZipIt (http://www.awa.com/softlock/zipit/) ($15: zip)
bin-tar-gzip (http://www.ne.jp/asahi/techno/ostra/down/down.html) (無料: tgz)最初の2種は主に Windows 環境で多用される形式ですが、unix でも対応ツールが用意されているはずです。tar-gzip (tgz) は unix 環境でよく使われているアーカイブ形式で、Windows でも中級者以上向けのアーカイバについては大半が対応してます。
namatamago
2001/11/19, 02:59 PM
Kohさん、ご親切に、ありがとうございます。
MacLHAは持っていました(^_^;ゞ
パーミッションを変えても上手くいきません。チャットも設置してあるのですが、それはちゃんと動きます。それはZOO CHATというスクリプトが配付されているのを使わせていただいているのですが、cgi-lib.plは使っていないようです。どうやってフォームで送られるデータを得ているのか。。。スクリプトをながめて見てもチンプンカンプン(@@)
まだまだ修行が足りません。
dimbula
2001/11/20, 02:19 AM
cgi-lib.pl で件のエラーメッセージを出している部分は、
$type = $ENV{'CONTENT_TYPE'};
$len = $ENV{'CONTENT_LENGTH'};
$meth = $ENV{'REQUEST_METHOD'};
# 省略
if (!defined $meth || $meth eq '' || $meth eq 'GET' ||
$meth eq 'HEAD' ||
$type eq 'application/x-www-form-urlencoded') {
# 省略
} elsif ($ENV{'CONTENT_TYPE'} =~ m#^multipart/form-data#) {
# 省略
} else {
&CgiDie("cgi-lib.pl: Unknown Content-type: $ENV{'CONTENT_TYPE'}\n");
}
こんな感じになってます。$ENV{'CONTENT_TYPE'} と $ENV{'REQUEST_METHOD'} の値がどうなっているか確認してみると、解決に一歩近付くかもしれません。
dimbula
2001/11/20, 02:25 AM
補足。
http://htmllint.itc.keio.ac.jp/faq.html
でこれに似たケースが扱われていますが、何か関係があるかもしれません。
namatamago
2001/11/22, 05:11 PM
dimbulaさん、レスをありがとうございます。
フォームで入力された文字を送ってtest.cgiを実行するボタンを
ニフティとエクスリアの両方で試してみました。
http://homepage2.nifty.com/k-r-m-/test_nifty.html
http://namatamago.s6.xrea.com/suna/test_xrea.html
結果はどちらも同じで、別にエクスリアでエラーも出ませんでした。
では、なぜ私の掲示板は上手くいかないのか、ますます分かりません。
###test.cgiのソースです###
#!/usr/local/bin/perl
require 'cgi-lib.pl';
&ReadParse;
$type = $ENV{'CONTENT_TYPE'};
$len = $ENV{'CONTENT_LENGTH'};
$meth = $ENV{'REQUEST_METHOD'};
$k=$in{"k"};
print "Content-type: text/html\n\n";
print <<EOM;
<html>
<head>
<title>てすと</title>
</head>
<body>
(1)$type<br>
(2)$len<br>
(3)$meth<br>
(4)$k
</body>
</html>
EOM
###ここまで###
補足。
http://htmllint.itc.keio.ac.jp/faq.html
でこれに似たケースが扱われていますが、何か関係があるかもしれません。
そこを見てみました。良く分かりませんが、cgi-lib.plの代りにCGI.pmを使う方法もあるのですね。
dimbula
2001/11/24, 12:06 AM
> 結果はどちらも同じで、別にエクスリアでエラーも出ませんでした。では、なぜ私の掲示板は上手くいかないのか、ますます分かりません。
実際の掲示板スクリプトでは、これらの値がどのように移り変わっているのか、確認してみては如何でしょう?適宜 print なんかで表示して。
それにしても。ニフティだと正常に動いてるんですよね?……不思議だ。
こうなると、何か単純なケアレスミスだったりするかもしれません。例えば、アスキーで転送しなきゃいけないのを、うっかりバイナリで転送しちゃってるとか、文字コードの問題とか。
いっそのこと、CGI 関連の処理を全部自前で書いてもいいかもしれません。そんなに難しい処理でもないですし(特に Perl では)。
> 良く分かりませんが、cgi-lib.plの代りにCGI.pmを使う方法もあるのですね。
Perl には詳しくないんですが、最近は *.pm を使う流れになってきているような気がします。
usopion
2001/11/24, 10:53 AM
とりあえず、こいつが怪しい↓
top.location="$url1"+"suna_hyouji.cgi?ban=$banngou";
ので、
setTimeout("top.location='$url1'+'suna_hyouji.cgi?ban=$banngou';",5000);
とかしてみたところ、エラーは出ないですが、
各フレームが表示されない。
ソースを見てみると、
本来
<noframes>
<body>
---ここに広告が入るはず--
フレームに対応しているブラウザでご覧ください
</body>
</noframes>
となるはずが、
--こんなところに広告タグが入る--
<html>
<head>
<title>掲示板「砂」</title>
</head>
<frameset rows="60%,38%" bordercolor="white" framespacing="0" border="1" frameborder="yes">
<frame src="suna_up.cgi" name="up" noresize>
<frame src="suna_down.cgi?ban=5あとここになぜかバイナリデータが1バイトあるぞっと5" name="down" noresize>
</frameset>
<noframes>
<body>
フレームに対応しているブラウザでご覧ください
</body>
</noframes>
</html>
な風になっている。
多分、リダイレクトしている弊害と思われ。
とりあえずsuna_hyouji.cgiの適当な位置に
<!--nobanner-->
を入れとけば何とかなるぞっと。
なんでこうなるかは不明。
Xreaの仕様かバグか、その辺はサポートさんにでも聞いてください。
それにしても、変数$koreにバイナリデータが含まれるのが
季になります。
その辺も要チェック!
usopion
2001/11/24, 11:10 AM
解りました。
各スクリプトで、
require "cgi-lib.pl";
require "jcode.pl";
require "suna_env.cgi";
&ReadParse;
&env_init;
としておきながら、
その各スクリプトから呼び出している先の
suna_env.cgiで、更に
require 'cgi-lib.pl';
require 'jcode.pl';
&ReadParse;
とする必要は皆無と思われ。
むしろ、悪さをするだけ。
suna_env.cgiの指摘部分を削除するか、
各スクリプトを、
require "suna_env.cgi";
とするかしましょうっっっっ
namatamago
2001/11/24, 12:41 PM
usopionさん、こんにちは。
top.location="$url1"+"suna_hyouji.cgi?ban=$banngou";
を
setTimeout("top.location='$url1'+'suna_hyouji.cgi?ban=$banngou';",5000);
に、変えると上手くいきました!
試しに5000を100にしてみたらダメでした。ある程度の時間をおかないといけないということなのですね。(5000にしろ100にしろ、あっという間のことですが)
suna_env.cgiの
require 'cgi-lib.pl';
require 'jcode.pl';
&ReadParse;
の部分もカットしました。スクリプトを書きはじめる時は、最初の数行はコピー&ペーストしてしまうので、いらないものまで付けてしまっていたようです。
みなさん、どうも有難うございました。
vBulletin® v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.