このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

EasyBBS PX を @nifty で・・・

発言者:honey
( Date Friday, August 02, 2002 00:02:25 )


みっともない話ですが、EasyBBS PX(Perl版)を@Niftyで動かす
のに苦心しています。

cgi-bin の中にbbsフォルダ以下を入れる。
cgi-bin の中にbbs.cgiのみを入れ、bbsフォルダのほかのファイルは
homepage以下に入れる。(bbs.cgiのディレクトリ指定は書き換え済み)

などなど、やってみたのですが、どうも上手く行きません。
CGI.pmなどもちゃんと入れたのですが、cgi実行中にエラーが
出たとなってしまいます。

どなたか、稼働させた実績のあるかたいらっしゃいますか?

吉村 さんからのコメント
( Friday, August 02, 2002 05:47:48 )

吉村と申します。初めて投稿致します。
田中先生、皆様はじめまして。よろしくお願いします。

私は @nifty のホームページサービスで EasyBBS PX 1.0.3 を使っています。
野田さん、田中先生、お世話になっております。

bbs.cgi を以下のように変更して動いています。
-----------------------------------
1行目
(訂正前)#!/usr/bin/perl
(訂正後)#!/usr/local/bin/perl

63行目
(訂正前)$myLocation="http://$myHost$myInfomation";
(訂正後)$myLocation="http://hpcgi2.nifty.com/~yoshimura/bbs/bbs.cgi";

68行目
(訂正前)$myFLocation=replaceAll($myLocation,"bbs.cgi","");
(訂正後)$myFLocation="http://hpcgi2.nifty.com/~yoshimura/bbs/";
-----------------------------------
63、68行目は、訂正しなくても動いたような記憶がありますが、定かではありません。
私は cgi-bin の中に bbs というフォルダを設けて、その中に EasyBBS PX フォルダ内のものを
入れているので、63、68行目の指定が上のようになっています。
私は1行目を変更し忘れて少し悩みました。このパスの指定は @nifty のページに書いてあります。
パーミッションの指定は、添付文書通りです。
CGI.pm は v2.25、jcode.pl は v2.6、それと CGI.pm-2.25.tar.gz を解凍してできた
CGI フォルダ(Carp.pm と Fast.pm が入っている)も bbs.cgi と同じ bbs フォルダ内に
置いています(Perl をよく知らないので、不要なのかどうか知らないのですが...)。
また、念のためと思って CGI.pm、jcode.plも含め、各ファイルの改行コードを LF に
しました(もちろん Mac を使っているので)。
参考になりますでしょうか?

「参加者が少ない BBS」というより、私の日記に近いものになりつつありますが(笑)、
快適に使わせていただいています。


→  MacPython BBS(よ)

honeys さんからのコメント
( Friday, August 02, 2002 10:06:24 )

吉村さん。お返事ありがとう。
動いている方がいると知り,やる気が出てきました。

書かれていることを参考に,1行目(これは最初に気が付いてやってありました),63・68は最初書き換え,次はオリジナルのまま試しましたが,やはり
エラーです。
(CGI.pmは吉村さんとバージョンまで揃え,@INCに CGI/を加えてあります)

Can't locate Time/Local.pm in @INC (@INC contains: CGI/ /usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/5.005/sun4-solaris /usr/local/lib/perl5/site_perl/5.005 .) at bbs.cgi line 4.
BEGIN failed--compilation aborted at bbs.cgi line 4.

というところまで進みましたが,Time/Local.pmで引っかかっているようです。

吉村さん,すいませんが,これって何かした記憶がありますか?

確かにNiftyのFAQを見ると,system,time等は使えませんと書いてあるので
自前で用意しないといけない気がしますが・・

野田純生 さんからのコメント
( Friday, August 02, 2002 16:53:10 )

Niftyはモジュール関係が使えないものが多いように聞いています。
ですので、ライブラリを使ったバージョンに改編しようと思っているの
ですが全然できていません。

すいません。いまちょっと忙しすぎて確認できないんです。
誰か詳しい方、フォローお願いします。

吉村 さんからのコメント
( Friday, August 02, 2002 19:16:06 )

私詳しくないんですが...
自分の cgi-bin から bbs.cgi をダウンロードして、EasyBBS PX の
オリジナルともう一度比較してみました。

すみません。大事な訂正箇所がありました。
4行目の
use Time::Local;
これを
#use Time::Local;
にコメントアウトしていました。どうしてそうしたかは、覚えていません。
niftyの FAQ 見て、使わないようにしたんだったかなぁ。

TOM neko さんからのコメント
( Saturday, August 03, 2002 01:09:27 )

@niftyではPerlのモジュールが1つも入ってません。
自分で入れれば使えますが、モジュールから他のモジュールを
呼び出してたりするので、必要最小限に選ぶのは、けっこう面倒です。
かといって、標準モジュール全部入れるのも容量的に勿体ないし。

honeys さんからのコメント
( Saturday, August 03, 2002 22:26:44 )

みなさんどうもありがとう。
吉村さんの情報通り

#use Time::Local;

で、ライブラリを見ることもなく、EasyBBS PXの起動画面がでました。

その後、試し書きをしたところ

「指定されたサーバが見つかりませんでした」

と、ダイアログボックスが出てしまいますが、かきこみ自体は
できているようです。50歩くらい進展しました。

あと少しで完動しそうなので、bbs.cgiをもう一度眺めてみます。


吉村 さんからのコメント
( Sunday, August 04, 2002 01:03:35 )

50歩くらい進展しましたか。よかったですね。
今まで書いた自分のとこの bbs.cgi とオリジナルとの違いは MPW の CompareFiles で
調べたので、漏れはないと思うのですが...
書き込みできているということは room_1 フォルダ内にファイルができているんですね。
room_1 に入ることができて、そこに書き込めるんですね。
ブラウザの URL ロケーションには正しいものが表示されますか?
と言いつつ、私はサーバや Perl について詳しくないので、はずしたこと言ってたら
ごめんなさい。

honeys さんからのコメント
( Sunday, August 04, 2002 21:40:18 )

「指定されたサーバが見つかりませんでした」

は解決しました。63,68行目はやはり書き換えないといけないようです。

とりあえず、少しためしたかぎりでは、ちゃんと動いているみたいです。
これからためしてみますが、いろいろありがとうございました。

吉村 さんからのコメント
( Tuesday, August 06, 2002 07:03:06 )

honeys さん、動きましたか!!

まとめると、
Easy BBS PX を @nifty で使うには...
-----------------------------------
1行目
(訂正前)#!/usr/bin/perl
(訂正後)#!/usr/local/bin/perl

4行目
(訂正前)use Time::Local;
(訂正後)#use Time::Local;

63行目
(訂正前)$myLocation="http://$myHost$myInfomation";
(訂正後)$myLocation="http://hpcgi?.nifty.com/XXXX/bbs/bbs.cgi";

68行目
(訂正前)$myFLocation=replaceAll($myLocation,"bbs.cgi","");
(訂正後)$myFLocation="http://hpcgi?.nifty.com/XXXX/bbs/";
-----------------------------------
bbs.cgi の以上を訂正する。
?と、/XXXX/以下は、各人の URL あるいはディレクトリに合わせる。
bbs.cgi、および各ファイル(BBS_header や ROOM_header など)の改行コードを LF にする。
文字コードは、Easy BBS PX の配付物のまま(Shift_JIS)でよい。
パーミッションの設定は添付書類通り。
CGI.pm を bbs.cgi と同じディレクトリに置く。
CGI.pm-2.25.tar.gz を解凍してできる CGI フォルダ(Fast.pm、Carp.pm)は不要。

ということでよろしいでしょうか?
私も4行目のことはすっかり忘れていたので、再びアップロードするようなときのために、
僭越ながらまとめさせていただきました。
間違いがあれば、コメント下さい。

honeys さんからのコメント
( Tuesday, August 06, 2002 18:48:30 )

マトメありがとうございます。

上の1行目から68行目まではその通りです。

改行コードは私はなんの考慮もしませんでした。FTPソフトにの
転送機能にお任せでした。

文字コードはいじりませんでした。

CGIフォルダについては、私の環境では入れてありますが、確かに
不要かもしれません。後で試してみます。

吉村 さんからのコメント
( Tuesday, August 06, 2002 20:39:13 )

>マトメありがとうございます。
どういたしまして。私自身のためです。

改行コードはそのまま(CR)ですか。
私は確かめたわけではありません。自分が Mac だから、LF にするものだと思ってました。
不正確でした。すみません。

では、上の1行目から68行目までを訂正するだけでいいんですね。
解決してしまうと簡単ですね。
4行目がちょっと気がつきませんね。私忘れていました。

honeys さんからのコメント
( Tuesday, August 06, 2002 23:54:07 )

CGI はいらないようです。

ただ、今気がつきましたが、新規発言はできるのですが、
コメントができないようです。

エラーにはなりませんが、画面が白くなったまま新たにページが
表示もされないし、実際に更新もされていないようです。

ほかにもあるのかな。

honeys さんからのコメント
( Wednesday, August 07, 2002 09:49:04 )

honeysです。たびたびすいません。

コメント自体はできるようになりました。
どうやら,各ファイルを書き換えたときに,いけないところまで
変更してしまったようです。

オリジナルを尊重して,注意深く書き換えたところ,コメントできて,
Recentにリンクが出るところまで行きました。

しかし,そこから先が改善されません。

1 元ファイル表示
2 コメント入力->submit
3 元ファイルにコメント文追加
4 Recent作成
5 コメントが加わった元ファイルを表示

という流れだと思いますが,4までいったところで,終わってしまう
みたいです。新規の時はちゃんと書き込まれたファイルが表示される
のですが。

吉村 さんからのコメント
( Wednesday, August 07, 2002 11:51:50 )

1から4までちゃんと動作しているなら、あらためて「話題」のページを開くと、
コメントが追加されていますか?

ブラウザが再読み込みをしていないということは考えられませんか?
私の BBS でもそういう報告をいただいたことがあります。

→  http://hpcgi2.nifty.com/~yoshimura/bbs/bbs.cgi?r=room_1&BBS_MSG_020527031242.html#020529203638

吉村 さんからのコメント
( Wednesday, August 07, 2002 12:02:50 )

ちょっと舌足らずでした。
Netscape Communicator をお使いでしたら、確認してみて下さい。
上の話の解決編が、上のリンクページの少し下にあります。

→  上のリンクページの少し下。

honeys さんからのコメント
( Wednesday, August 07, 2002 14:01:50 )

吉村さんどもです。
link部分も見させていただきました。

確かに同じような症状のようです。

再読み込みさせるか,移動ボタンを押すと表示されます。

今は,WinXPのIE6でアクセスしていますが,キャッシュの設定がどこに
あるか分かりません。あとで,Macでも試しますが・・・

これはブラウザの設定を変えるしかないんでしょうか。
cgiをうまく調整してexpireさせられないものでしょうかねえ。

今は,出先なので夜にでも少し試して見ます。

ま。コメントも書き込み自体はできるので,その旨の注釈をしておいて,
リロードしてもらうということでOPENはできそうです。

TOM neko さんからのコメント
( Wednesday, August 07, 2002 14:41:01 )

#use Time::Local;
としたのですから、timelocal()は使えなくなります。
となると、date_Check()の返り値はいつもfalseになりますね。
つまり、日付けのチェック機能が働かなくなってます。

吉村 さんからのコメント
( Wednesday, August 07, 2002 20:54:00 )

そうですね。愕然としました。ひぇー。
私の BBS も当然、メッセージ検索の日付による絞り込みができません。
今まで気がつきませんでした。テスト不足でした。
実行してみると、@nifty の CGI エラーのページが表示されます。
とりあえず、MacJPerl 5.2.0r4 J1:lib:Time:Local.pm の 42 - 123 行をコピーして
Carp の croak を使っている 91 -95 行をコメントアウトして bbs.cgi の末尾にペーストする、
ということで対処してみましたが、きれいな方法ではないですね。

TOM neko さんからのコメント
( Thursday, August 08, 2002 15:12:08 )

このさいLocal.pmとCarp.pmだけ入れてしまいましょうか。

cgi-bin - lib - Carp.pm
              - Time    - Local.pm

とlibディレクトリを作ってモジュールを中に入れます。
プログラムの方には以下の記述を最初に書いてパスを通します。

BEGIN{
  unshift @INC, "/cgi-bin/lib";
}

野田 純生 さんからのコメント
( Thursday, August 08, 2002 16:01:51 )

えーっと、大幅に出遅れてしまったのですが、
まず、キャッシュを使わない場合は、
テスト時に更新が煩雑ならば(#で)コメントアウト
と書いてある行(84行,98行)を文字どおりコメントアウトすれば良いと思い
ます。

日付関係は、実際あんまりスマートな書き方では無いので(元々Perlを覚え
がてら書いたcgiですので)、後半にまとめてある日付関係のサブルーチンを
見直していただければ...

EasyBBSの動作をトレースするのが当初の目的でしたから、日付の表記方式等
は変えても問題なければもう少しソース自身もシンプルになると思います。

# すいません、何の解決にもならないと思うのですが...
# いずれ、モジュールを使わないオリジナルバージョンを作ろうという気持
# ちもあるんですけど、しばらくできそうになくて。

吉村 さんからのコメント
( Thursday, August 08, 2002 19:24:23 )

TOM neko さん>
なるほど、そうですね。素直にモジュールを入れればすっきりできますね。
私は Perl をよく知らないので、つい面倒に思ってコピーでやってしまいました。
これは悪い対処法だったかもしれません。

野田 純生 さん>
>テスト時に更新が煩雑ならば(#で)コメントアウト
この行はそういう意味だったのですね。全く知りませんでした。
コメントアウトして使わせていただきます。

># すいません、何の解決にもならないと思うのですが...
いいえ、勉強になりました。ありがとうございます。

honeys さん>
いつの間にか、勝手に私が勉強させてもらっていますが、honeys さんの BBS は
うまくいってますか?

honeys さんからのコメント
( Monday, August 12, 2002 13:49:38 )

大丈夫です。時間関係は動いていませんが(^^;
たぶん,ほとんど使われてないのでそのままにして運用を
はじめてます。

一度,TOM nekoさんの書かれているようにやってみたのですが,
cgiエラーになってしまったので深追いはしませんでした。

吉村 さんからのコメント
( Tuesday, August 13, 2002 00:15:09 )

私のは現在、
-----------------------------------
1行目
(訂正前)#!/usr/bin/perl
(訂正後)#!/usr/local/bin/perl

4行目
(訂正前)use Time::Local;
(訂正後)#use Time::Local;

63行目
(訂正前)$myLocation="http://$myHost$myInfomation";
(訂正後)$myLocation="http://hpcgi?.nifty.com/XXXX/bbs/bbs.cgi";

68行目
(訂正前)$myFLocation=replaceAll($myLocation,"bbs.cgi","");
(訂正後)$myFLocation="http://hpcgi?.nifty.com/XXXX/bbs/";

84行目
(訂正前)print "Last-modified: $myModDateRFC_1123\n"; #### テスト時に更新が煩雑ならば(#で)コメントアウト
(訂正後)#print "Last-modified: $myModDateRFC_1123\n"; #### テスト時に更新が煩雑ならば(#で)コメントアウト

98行目
(訂正前)print "Last-modified: $myModDateRFC_1123\n";#### テスト時に更新が煩雑ならば(#で)コメントアウト
(訂正後)#print "Last-modified: $myModDateRFC_1123\n";#### テスト時に更新が煩雑ならば(#で)コメントアウト

MacJPerl 5.2.0r4 J1:lib:Time:Local.pm の 42 - 123 行をコピーして
bbs.cgi の末尾にペーストする。その時に、CGI::Carp の croak を使っている 91 -95 行を
コメントアウトあるいは削除する。(これは4行目でコメントアウトした localtime などを使えるようにするため)
-----------------------------------
以上を訂正する。
?と、/XXXX/以下は、各人の URL あるいはディレクトリに合わせる。
改行コード、文字コードは、Easy BBS PX の配付物のまま(Shift_JIS)でよい。
パーミッションの設定は添付書類通り。
また、bbs.cgi と同じ階層に CGI.pm を置くなど、その他は添付文書通り。

ということで、動いています。日付による絞り込み、xStamp も動いています。