毎度お騒がせしておりましたが、このたび、無事『壊れたcgi』の復活が完了いたしました。もう、なんと言うか、至福の瞬間です。sbの開発者・takkyunさまには、感謝の言葉を尽くしても足りません。本当にありがとうございます。
さて、今回のcgiの破損は、そもそも、どうして起こったかと言えば、原因の特定は、当初わたしにも難しかったのですが、その後、テスト用に裏で動かしていたもうひとつのsb(sb2)を触っているうちに、「ははん、これだな」と言うことに、行き当たりました。
----------------------------------------
随分長い間、sbの更新ができなかったので、ひよこ日記だけでも、裏sbに仮にUPしようと思い立って、裏sbに入ってたログを消そうとしたのです。で、管理画面から、エントリー(記事)は全部消したのですが、コメントとトラックバックはそのまま残っています。おや?と思いつつ、コメントだけを消していったら、そのうちに、嫌な感じがして、エラーが出てしまいました。その後は、ファイルロックがされてしまって、残っているコメントを消すことができなくなってしまいました。で、結局は、裏sbは消してしまったのですが・・・
こちらのcgiが壊れたときも、コメントを消したときでした。つまり、コメントを消すときに、何かのタイミングで、エラーが出てしまうときがあり、その結果、cgiファイルが壊れてしまうようなのです。同じsbを使っている友人には、そんな現象はないというので、わたしの操作のやり方がまずいのか、あるいは、サーバとの相性なのか、わからないのですが、今後、コメントを消す際には、細心の注意を払わねば、と思います。
さて、長々と書いていますが、今後sbを使用なさってる方の中で、わたしと同じような現象が起きた場合のために、簡単なメモを残しておこうと思います。
今回のentry.cgi復活が適用できるのは、data/entry内に、cgiファイルが、最初から最新まで、完全な形で残ってる場合に限られます。つまり、ご自分で、data/entry内のファイルを消してしまった場合には、これは該当しません。
sbUsersGroupの掲示板パティオのわたしの質問に詳細があります。
http://sbcom.jpn.org/sbcom/patio/patio.cgi?mode=view&no=135
順を追って、説明しておきます。
1.data/entry内のファイルのバックアップを取っておく。階層は、data/entryそのままにする。
2.ActivePerlをインストールする。(teraさまの記事を参考に。http://prius.sakura.ne.jp/sb/sb.cgi?eid=180)
3.復活スクリプトをDLして、解凍する(Dlはこちらからhttp://serennz.cool.ne.jp/sblog/util/download.cgi/recovery.zip)
4.3.で解凍してできたrecovery.plを、data/に置いて、ダブルクリックすると、コマンドプロンプトの画面が開いて、一気に復活!
5.FTPで接続して、サーバ上のdata/内のentry.cgiを削除して、4.でできたentry.cgiをアップロードする。※このときに、パーミッション(666)を変更するのを忘れないように!
※これで修正はされているのですが、index.htmlは、書き換えられていないので、一見、何もされていないように見えます。しかし、管理画面に入って見ると、エントリーが復活しているのがわかります。再構築を試みましたが、ファイルがロックされています、と出ます。そこで・・・→追記)再構築できなかった理由(下に記しておきました↓)
6.管理画面から、最新のエントリーを保存する。
これで、インデックスファイルにも反映されるはずです。完了です。
※再構築できなかった理由
わたしは10/27の時点で、sb全体をFTPでバックアップしておいた上に、その後、11/14時点のファイルを上書きして保存したのですが、10/27以降に、すでにサーバ上では削除してしまった記事のcgiファイルが、ローカル側では残っていて、そこでrecovery.plを実行したために、その分も、entry.cgiに復活されてしまったからのようです。再構築するときに、entry.cgiが該当するcgiファイルを探して、見つからなかったために、エラーが出たものと思われます。通常であれば、ここで再構築できるものと思います。