今回、お仕事でRapidsiteさんのホスティングを使わせていただきました。

クライアントさんが確認できるように会社のサーバでテストサイトを構築していましたので、そのデータをそのままFTP、MySQLはダンプしてMysqladmin経由でインポートというフローを描いていましたが、これがなかなか一筋縄ではいかず・・・

クライアントさんが待っていますので、久しぶりに徹夜だったのですが、トラブルの原因と対応をメモしときます。

今回のサイト制作ではWeb標準化も含め、文字コードもUTF-8を使いました。
そのため、インストールはもちろんUTF-8を指定するのですが、インストール後ログインしようとするとエラー・・・
どうしてもログイン出来ません。
ブログのホームを開いてみるとタイトルや記事部分が文字化けです。
#この段階で、Wordpressをよく知ってる方は、原因が飲み込めておられる事と思います。

今回の現象は(運良く)初めて体験したのですが、調べてみるとどうやらよく起こっている現象のようです。
特にWindowsにインストールしたときに発生するという記事が目立ちました。
問題はUTF-8でインストールした際にwp_optionsテーブルのユーザ権限情報が文字コードの関係から不整合を起こしてしまうとのこと。
Pachを紹介されている方がいらっしゃったので、早速試すもNG。

DB の情報を書き換えてやれば直るだろうと考え、テストサーバのMySQLからダンプしたデータをRapidsite用に修正し、mysqladminでイン ポートしてもだめ。もちろんsshでログインしてmysql -u *** -p [DB Name] < dump.sql なことをやってみてもだめ。

WordpressをEUCでインストールし直すときれいに動くので、この状態でDBをインポート&各種文字コードの設定を手動で直してみたのですが、ログインは出来るものの記事が文字化け。

もうEUC用にテンプレートを直そうかとも考えながら、ここで一服。

そういえば、MySQLでテーブルを作ったときに、文字コードの指定をしないとEUCになっていたことを思い出しました・・・

そう、犯人はMySQLの設定。
ずっとWordpressの問題だと思いこんでしまっていたので、気づくのに時間がかかりましたが、とにかくmy.cnfを開いてデフォルトの文字コードをUTF-8に変更。
MySQLを再起動してからWordpressをインストールし直すと文字化けもエラーもありません。

ほっとしながらDBのデータをずばっと流し込んだのですが、またもや文字化け。
ダンプの仕方が悪かったのか・・・
悩んでいてもしょうがないので、各テーブル毎にダンプデータを切り分けて、必要な部分だけをぼちぼちとインポート。ただし、wp_optionsだけはこわいのでインポートはせず。

やっと記事がまともに表示されたのですが、ここでもう一つ問題が・・・
記事の確認を編集画面で行い保存を押すとなぜか日本語が全て消えてしまいました。
設定画面でブログ名を日本語で入れるとやはり消えます。
ちなみに、手製のメールフォームで日本語のメッセージを入力して、内容確認の画面を表示させると見事に文字化け。
もう、ここまで来たらPHPの問題としか考えられません。
php.iniを開いてmbstring関係の設定を見ると・・・やはりデフォルトがEUC。
なるほど、RapidsiteさんはEUCをベースに考えられているのですね。
とはいえ、今回はUTF-8がベースですので、必要な項目をUTF-8に変更。
無事に日本語の不具合も解消できました。
#クライアントさんへの連絡も何とか間に合ってほっとしましたぁ。

今回の教訓
「だろう運転は事故の元」

  • サーバの設定は自分の目で確認
    • MySQLの設定
    • PHPの設定
    • Apacheの設定
  • DBのインポート前にダンプファイルを整理
  • 以上のベースとなる設定を把握してからアプリケーションを疑え!

関連記事