CGI-BBS > 電子掲示板 > 簡易BBS > minibbs2000で発言番号が飛んでしまいました。


カレッヂ
カレッヂ


質問者 とおる  投稿日 4/2(月) 01:41:57
minibbs2000で【xxxx】という様に表示される発言番号が、
普通は発言ごとに1ずつプラスされるはずなのに、なぜか、
【2269】から【1607】に飛んでしまいました。(^^ゞ

そこでLOGファイルをダウンロードしてエディターで修正し、
再アップロードしたら、発言番号も発言者の名前も無く、
【】の中に本文が一行ずつ表示され、発言がバラバラになって
しまいました。

バックアップはあるので、とりあえず大丈夫なのですが、発言番号の
エラーが直せません。
uploadもdownloadもバイナリでやりましたし、sjis&LFなどの
ファイル形式もいろいろ試しましたが、上手くいきませんでした。

どなたか解決策を教えてください。M(__)M
回答者 しあわせのツボ  [削除]  投稿日 4/2(月) 11:16:22
http://www.rescue.ne.jp/CGI-BBS/beginners/crlf/20010329112204.shtml
このへんを参考にしてみて下さい。
回答者 羊相談員  [削除]  投稿日 4/2(月) 15:49:04
改行コードの自動変換機能を持ったエディタでログファイルを修正
 ↓
改行コードを変換して保存
 ↓
バイナリモードで転送

この方法だと改行コードが自分のパソコンのものになってしまう可能性があります。
サーバの改行コードで保存するか
アスキー(テキスト)モードで転送する必要があります。


例を挙げてもう少し詳しく解説します。

自分のパソコンのOSがWindowsで
サーバのOSがUNIXの場合
サーバで使っていたファイルをダウンロードして
自分のパソコンで修正すると
(エディタによって動作は違いますが)改行コードがWindowsのものに変更される可能性があります。
(Windowsのメモ帳のように改行コードの変換機能自体がないソフトもあります)
バイナリモードはファイルをそのまま転送するので
改行コードの自動変換等は行いません。
つまり、修正して改行コードがWindowsのものになっているファイルをバイナリモードで転送しても改行コードはそのままです。
アスキー(テキスト)モードならサーバのOSに合わせて変換処理を行ってくれます。


注)エディタやFTPソフトには星の数ほど種類があります。
この世に存在するすべてのソフトが同じ動作をするはずはないので
上記の例に当てはまらないソフトもあります。
回答者 羊相談員  [削除]  投稿日 4/2(月) 15:54:28
補足

上記の説明は
改行コードの自動変換機能を持っていないエディタを使用されている場合は
完全に的外れの回答となります。
回答者 しあわせのツボ  [削除]  投稿日 4/2(月) 16:46:19
MiniBBS2000のログは改行コードを「変換してはいけない」形式のようです。
# \rと\nに別の意味を持たせてあります。
なので、アスキーモードで転送してしまったり、改行コードを強制的に変換してしまうエディタを使ってしまった場合、ログが破壊されます。

とり急ぎ、修復ツールをアップデートしてMiniBBS2000に対応させました。
以下からどうぞ。
http://www.kinet.or.jp/h_ijuin/warehouse/
質問者 とおる  [削除]  投稿日 4/2(月) 19:10:45
しあわせのツボさん&羊相談員さん

早速のアドバイス、ありがとうございます。M(__)M
まず、こちらのOSや使用ソフトなどの情報を補足します。

自分のOS:Windows Me  サーバーのOS:UNIX
FTPソフト:IBMホームページビルダー2001付属FTPソフト
編集エディター:秀丸エディターVer3.01

改行コードについての詳しい解説、わかったつもりで、
さっそく、テキストモードでのDL&ULとバイナリモードでのDL&UL
さらには、秀丸エディターとノートパッドでの編集、
それぞれ組み合わせて行いましたが、異常表示は変わりませんでした。

しかし、以下のことがわかりました。

1. テキストモードでもバイナリモードでも、ファイルをUL&DLするだけなら正常表示される。
2. 秀丸エディターでもノートパッドでも一度開いて閉じるだけなら正常表示される。
3. 秀丸エディターでもノートパッドでも何の編集もせずファイルを上書きするだけで、
  ファイルのバイト数が変わり(保存形式によって増減)、異常表示される。
4. 3で上書きしたファイルをテキストモードでULすると、
   バイト数は元に戻るが異常表示される。

このことから、教えて下さったようにやはりエディターが悪さしているようです。
そこで保存形式を選べる秀丸で、SJIS(LF+CR),SJIS(LF),SJIS(CR)のそれぞれで
やってみました。

するとSJIS(LF+CR),SJIS(LF)は変わらず発言文はバラバラで異常表示、
SJIS(CR)は発言文はバラバラではなく読めますが、表示順が古い発言からになってしまい、
さらに一つずつに区切られずにやはり異常表示されます。
ファイルのバイト数もSJIS(LF+CR)ではかなり増え、SJIS(LF)とSJIS(CR)では
わずかに減ります。

やはりエディターを変えなければならないのでしょうか?
----------------------------------------------------------------------------
ここまで書いていたら、なんとしあわせのツボさんがパッチCGIを!
ありがとうございます。さっそく、試してみます。M(__)M

ということは、バイナリモードで転送して、全く改行コードを変換しないエディターを
使う必要があるということですね。これも探してみます。
----------------------------------------------------------------------------
質問者 とおる  [削除]  投稿日 4/2(月) 20:13:33
しあわせのツボさんが作った下さったパッチCGIを使いましたが、
以下のようにエラーになって起動しませでした。

ファイル名を res9aid.cgi に変更してサーバーに転送し、
アクセス権を755に変更、perlのパスも同じディレクトリで稼動している
minibbs2000.cgi と同じに合わせました。そしてブラウザから呼び出したところ、
Internal Server Error という表示と以下の英文が・・・・。

The server encountered an internal error or misconfiguration and was unable
to complete your request.
Please contact the server administrator, root@otyanoma.net and inform them
of the time the error occurred, and anything you might have done that may
have caused the error.
More information about this error may be available in the server error log.
----------------------------------------------------------------------------
Apache/1.3.12 Server at sv.otyanoma.net Port 80

初期設定も以下のように指定どおりにしたはずなのですが。
#*#*# 初期設定 #*#*#

# 簡易パスワード(必須)
# 安全のためパスワードを設定する
# ※このスクリプトは修復終了後速やかにサーバから削除すること
$password = 'abcdefg'; <-ダミーです。

# ログファイルのあるディレクトリを設定
# このスクリプトがある場所からの相対パス、又はサーバの絶対パスを記入
$where = './data/'; <-後ろの/も要るのですよね。

# このスクリプトのファイル名
# 通常はこのままでよい。うまく動作しない時はファイル名・パス・URIのいずれかを記入

$here = "$ENV{'SCRIPT_NAME'}";

スクリプトのファイル名は、$here = "res9aid.cgi";などやフルパスURL+ファイル名
などやってみましたが、同じでした。
なにがいけないんでしょう?
回答者 しあわせのツボ  [削除]  投稿日 4/2(月) 20:57:13
すみません、間に合わせで作ったので、バグが取れていないかもしれません。
こちらでもチェックしてみます。
テキストモードで転送していますよね?
回答者 しあわせのツボ  [削除]  投稿日 4/2(月) 21:02:16
すみません、こちらのミスでした。アップし直してあります。
設定はおっしゃる通りでOKです。
質問者 とおる  [削除]  投稿日 4/3(火) 00:43:34
しあわせのツボさんへ

パッチCGIの再UPありがとうございます。M(__)M
早速、試してみました。
今度は、ファイル名とパスワードを入力し、修復ボタンを押すと、
先ほどと同じInternal Server Errorというエラーメッセージが出ました。

初期設定の以下のところが原因では?と色々試しましたが、同じです。

# このスクリプトのファイル名
# 通常はこのままでよい。うまく動作しない時はファイル名・パス・URIのいずれかを記入
$here = "$ENV{'SCRIPT_NAME'}";

何度もスミマセン!M(__)M

回答者 しあわせのツボ  [削除]  投稿日 4/3(火) 18:26:33
バグが残っていました。
手元で確認したので、今度こそ大丈夫…だといいのですが(自信なし)。
申し訳ありませんが、設置し直してみて下さい。
質問者 とおる  [削除]  投稿日 4/3(火) 20:24:06
しあわせのツボさんへ

パッチCGIの更新ありがとうございました。M(__)M
今回はすんなり、『処置完了 バージョン 2000 系のログファイルとして
修復できたようです。』というメッセージが出ました。

詳しくは以下のとおりです。
------------------------------------------------------------------------
バイナリモードでオリジナルをDLし、それを秀丸エディターで編集、
自動選択もしくは Shift-JIS(CR+LFだと思う)で保存、再びバイナリモーでUP。

掲示板で見ると、本来、発言番号の入る【】に本文が一行ずつ入ってしまい、
バラバラな異常表示になる。

そこで、事前に設定しUL済みのしあわせのツボさん作、res9aid.cgi をブラウザ
から実行!ファイル名、パスワードを入力して修復ボタンをクリック。
処置完了のメッセージが出て、掲示板で再表示、最初はさっきと同じ異常表示だが、
ここで祈りながら、掲示板の更新ボタンをクリック!

すると・・・・・お見事!正常表示に戻りました!!!パチパチ(拍手)(^.^)/
------------------------------------------------------------------------

いろいろとログファイルを調べてみたら、秀丸やMeのノートパッドで、
一度でも上書きすると、改行コードを書き換えて、掲示板で見るときと同じ様に
本文が数行に分かれてしまいます。(開くときすでに自動変換している)

悪さをしないエディターが見つかったので、それでオリジナルのログファイルを見たら。
minibbs2000のログは、一発言が一行という特殊なフォーマットで保存されているのですね。
CR+LFと、LFだけが混在してるので、秀丸などでは改行コードを書き換えないような、
そのままの保存はできないことが分かりました。

【AzEdit】というシンプルながら、大きいファイルを扱えるフリーのエディターで
          以下のHPにあります。

http://hp.vector.co.jp/authors/VA023391/

バイナリモードでDLしたログファイルをこのエディターで編集して、Shift-JIS & LF
(デフォルト)という設定で保存し、再びバイナリモードでULすると、なんと
ちゃんと正しく表示されました。拍子抜け(^^ゞ

いずれにせよ。お二人のアドバイスのおかげです。本当にありがとうございました。

このページは終了したので返信(回答)は書きこめません

Web裏技