mixiユーザー(id:46040)

2017年04月05日05:56

213 view

直感デバッグ

NetCommonsを利用して、会議室予約システムを運用しているのですが、運用管理をしている職員からadminでもログインできなくなったと連絡を受けました。

状況としてはアカウントもパスワードも正確なのに、ログインボタンを押してもエラーも表示せずに、未ログインの状態で元に戻るだけです。未ログインでも参照可能な機能は正常に動作するのですが、権限が必要な機能を選択すると、権限エラーの表示をします。

フリーのCMSはコストがかからなくて良いのですが、不具合は自力で直すしかありません。PHP製ですので何とかなるかなと思い、ソースをちょっと見たのですが、さすがに国立情報学研究所のソースコードは高尚過ぎて手掛かりさえ掴めませんw

そこで、直感によるデバッグ。passwordやauthなど、使われていそうな単語を軒並みgrepしてみましたが、それらしいところに行き当たりません。
今度はデータベースにログインして、テーブル一覧からユーザテーブルを見つけてデータダンプをしてみましたが、それらしき兆候のデータもありません。

テーブル一覧を眺めていると、ふとsessionというテーブル名が目に止まりました。そして、内容を表示させようとすると、テーブルが壊れているとのメッセージ。ビンゴ!!

バックアップファイルでディスク領域に空きがなくなったところに、セッションデータを書き込もうとしてテーブル自体を壊してしまったようです。mysqlコマンドでテーブル修復。無事業務を再開することができました。

大きなプログラムでは、テーブルや変数名に人が直観的に思い付きやすい名称を付けておくのは大切ですね。まだハンガリアン記法は使われているのでしょうか。

3/7 11本
3/8 7本
3/9 2本
3/10 2本
3/11 2本
3/12 2本
3/13 3本
3/14 〜 4/4 0本
0 0

コメント

mixiユーザー

ログインしてコメントを確認・投稿する

<2017年04月>
      1
2345678
9101112131415
16171819202122
23242526272829
30