WordPressサイトでクラッキングの被害を受けている人が増えているそうです。
そこでWordPressのデータベース管理システム(MySQL)をより安全な状態にしようと、データベースのテーブルプレフィックス(接頭辞)を変更してみました。
その際ふたつのトラブルに遭遇したので、問題の詳細と解決策を備忘録しておきます。
動的データが反映されない
テーブルプレフィックスを変えたあとブラウザでサイトの表示を確認してみると、サイトの大半が真っ白になりました(汗)。
PHPで動いているデータ(動的なデータ)が、サイト上にまったく反映されなくなったのです。
PHP構文を使っていない部分だけが表示されている状態…。
あせってサーバーのMySQLを確認してみると、データベース自体は残っていました。
また各テーブルのプレフィックスも正常に変更されているという状況で、いったい何が原因なのか見当がつきません。
しかし発想を変えてサーバーにアップロード済みの各PHPファイルを調べてみたら犯人が判明。
原因は「wp-config.php」というWordPressのコアファイルにありました。
下記のようなプレフィックス設定を変更していなかったのです。
$table_prefix = ‘wp_’;
「wp_」の部分を新しいプレフィックスに変えたら今度は成功。
サイトへアクセスしてみると動的データが正常に表示されるようになりました。
WordPressの場合、テーブルプレフィックスを変更する際はサーバーのMySQLとwp-config.phpの2箇所で処理する必要があるわけですね。
管理画面が表示されない
サイトは表示されるようになったんですが、別の問題が発生。
WordPressの管理画面が表示されず、ログインも何もできないのです(滝汗)。
ブラウザからwp-admin配下のURLにアクセスしてみると、下記のようなメッセージが表示されます。
「このページにアクセスするための十分なアクセス権がありません。」
いや、管理人自身がアクセスしているんですけれど…。
まったく対策のしようがないので、上記の文章で完全一致検索してみました。
すると下記の記事にヒントが…!
ウェブデザインのヒント F*stream » Blog Archive » このページにアクセスするための十分なアクセス権がありません。
原因は文字コード変換による何かのエラーだろうなー
エラーが出るタイミング
・EUCからUTF-8に文字コードを変更した場合。またはその逆。
上記の内容をきっかけにもう一度wp-config.phpをみてみると、テキスト部分(日本語の部分)が文字化けしていました。
ためしにwp-config.phpの文字コードをUTF-8に修正してサーバーに再アップロードしてみたら…。
ビンゴ!
管理画面が正常に表示されました!
理屈はよくわかりませんが(苦笑)、原因はwp-config.phpの文字コードだった模様です。
UTF-8でサイトを運用する場合はwp-config.phpもUTF-8で保存するという、当たり前の話ですな…。
わたしはMySQLに関してど素人なので、データベースまわりのトラブルは本当にあせります。
問題に直面してはググって応急処置というやり方がいつまで通用するのか…(汗)。