いつもお世話になっております。
いままで普通に使えていたテーブルメーカーだったのですが、突然、HTTP500エラー等が発生するようになりました。
症状としては以下のようになります。
使用しているサーバ(lolipop)が最近新サーバーに移行するとのことで、データを移動したことくらいしか障害のおきる理由が思い当たりませんので、とりあえず、アップデートすれば改善するかと思い、最新版へ移行してみたのですが、状況は変わらないようです。
対処方法をご教示いただけましたら幸いです。
ご質問ありがとうございます。
ロリポップのWAF(ウェブアプリケーションファイアウォール)は、CMONOS.JP のクエリを考慮していないため、CGI の動作によって頻繁にエラーを返します。
エラーを回避するには WAF を無効にしてください。
https://lolipop.jp/manual/user/waf-set/
CMONOS.JP は SQL を利用しませんので、WAF が防御するあらゆる攻撃は、もともと無意味です。
データが途中で切れる現象については、原因が分かりませんが、データベースが壊れているのではなく、特定文字を出力しようとすると強制終了するのではないかと思います。
こちらは、データベースの互換性に若干の問題があるのかもしれません。下記マニュアルをご参照ください。
以上参考になりましたら幸いです。
WAF を無効にした結果エラーを回避できるようになりました。
ロリポップへ問い合せしましたところ、サーバー移行にあたりPerlが「5.8」から「5.10」に変更された模様ですが、旧バージョンのPerlへのパスの用意はないとのことでした…。
この場合、データベースの互換性問題の対処方法はありますでしょうか?
ご教示頂けましたら幸いです。
もし旧環境にアクセスできるようでしたら、下記をお試しください。
旧環境に接続できない場合は、次をおためしください。
バックアップ処理が途中で止まってしまう場合、復元時にデータが欠損する可能性が高いのでご注意ください。
上記作業のあと、データベースの表示が強制終了する状況が悪化もせず改善もせず、作業前とまったく変わらない場合は、復元時に制御文字を除去する処理を加えてみますので、その旨ご連絡ください。
以上参考になりましたら幸いです。
ご教示ありがとうございます。
いくつか使用しているテーブルメーカーの大半はまともに動作するようになったのですが、そのうちの一つの
「音源DB」で「サーバーエラーが発生しました」とアラートが出てしまいなにも表示できない状態になってしまいました…。
この後どのように対処したらよろしいでしょうか。
ご報告ありがとうございます。旧環境に接続できない場合の手順を試されたという前提でお答えいたします。
添付したモジュールはこれまでのバージョンと異なり、バックアップ時と復元時に制御文字を除去する処理を追加してあります。もし不具合が(DBが非互換なために発生した)制御文字の出力に関係している場合は、モジュールを入れ替えて作業することで、正常に戻せる可能性があります。ただ、文字化けなどが発生するかもしれません。
以上参考になりましたら幸いです。
質問が行き違いになってしまい申しわけありません。
ご教示の方法を試しましたところ、
全てのテーブルメーカーで、添付ファイルのようなエラーが生じるようになってしまい、表示ができなくなってしまいました。
「BackUp.pm」および「Restore.pm」を元に戻して、再度バックアップを復元したほうがよいのでしょうか?
弊社のテスト環境ではおっしゃるような症状を再現できておりません。
上記お試しください。
ご報告ありがとうございます。
制御文字を除去しても状況が変わらないようですね。。。
バックアップファイルは、「~/cgi-data/data/CGIのフォルダ名」の中にある拡張子が .bak のファイルとなっております。
こちらはテキストファイルとなっており、「キー[TAB]値[改行]」の形式で記録されています。
データベース中の特定レコードに含まれる文字列が、データベース表示時にエラーを引き起こし、CGIが途中で強制終了しているものと思われます。ただその文字列が何なのかはわかりません。制御文字かと思いましたがそうではないようです。
ひとつひとつファイルをチェックして、おかしな文字列がないかどうかチェックする他ないように思います。表示されているファイルの次のファイルに問題があるということで、ある程度問題箇所の目星はつけられそうです。チェック後、バックアップを復元します。
ただ、レンタルサーバの仕様変更でこうしたことが起きているわけですから、レンタルサーバのサポートに復旧のため旧環境が必要なので用意してほしいとリクエストされてはいかがでしょうか。旧環境があれば、旧環境で作成したバックアップファイルを新環境で復元することで、復旧できるかと思います。
以上参考になりましたら幸いです。
追伸です。エラーを検出するために、KCatch.pm というデバッグスクリプトを利用して、エラーを表示できるかどうかお試しいただければと思います。
エラー情報を表示するには次のようにします。
上記をお試しいただき、表示されたエラーをこちらにコピーしていただけましたら、なんらかの解決をご呈示できるのではないかと思います。
バタバタしておりまして、作業が進まず、時間が経っての再質問となってしまい申し訳ありません。
現在の状況をご説明しますと、
と、ここまではよいのですが、
「1.データベース読み込みに失敗しました。
deco
2.データベース読み込みに失敗しました。
page
3.データベース読み込みに失敗しました。
inputfield」
というようなエラーを生じるようになってしまいました。
対処方法をご教示いただけますようお願いいたします。
なお、別件の問題もあるのですが、そちらはこの問題を解決した後に別のトピックで質問させて頂きたく思います。
ご質問ありがとうございます。
データを一つ一つチェックされたとのこと、たいへんな作業だったことと思います。
deco データベースは、棒グラフの幅などを保存している初期設定ファイルです。こちらはいったん削除して作りなおしてもそれほど再設定に時間はかからないかと思います。
~/cgi-data/preferences/common/deco(で始まるファイル/.bak以外)
を削除した後、「画像ライブラリ編集(共通)」で、棒グラフの幅などを再設定すると、エラーが出なくなるかと思います。
「page」「inputfield」でエラーが返るのも文字化けが発生していることが原因と思われます。
いったんバックアップを作成し、データと同じように文字化けがないか確認してください。ファイルの位置は
になります。
その後、下記作業を実行してください。事前に ~/cgi-data/preferences」と「~/cgi-data/data」フォルダをダウンロードしてバックアップとすることを忘れずにお願いします。
データベースをいったん削除しないと、不具合が継続する可能性があります。必ずいったん削除してください。
上記作業後も改行でデータが消える場合は、DBM形式を変更した方がよいかも知れません。
以上参考になりましたら幸いです。