マニュアルに載っているような一般的な内容は省略して、「文字化け対策」とその周辺の情報に焦点を絞ってまとめてみます。
諸々のバージョンやら
- WordPress 2.6.2
- phpMyAdmin 2.9.0.2
- MySQL 5.0.27
- PHP 5
- MacOSX 10.4.11
- Cyberduck 3.0.3
コトの経緯
まず、どういうことが起こってどういうことをしてどういう結論に達したのか、ということを列挙しておきます。
ポイントは後で分かりやすくまとめてるので、興味ない方は読み飛ばし可。
- 通常通りWordPressをインストール(成功)。
- インストール直後の表示は正常。「一般設定」で諸々の設定を行う。
- 「変更を保存」ボタンを押し、画面が切り替わった瞬間、「ブログタイトル」と「日付フォーマット」の入力値が文字化けしていることに気づく。
- 「wp-config.php」のうち、「DB_CHARSET」が「utf8」、「DB_COLLATE」もブランクであることを確認。問題なし。→WordPressの設定は正しそう。
- 「FirstServerコンフィグレータ」(サーバーの設定・操作を行う管理画面)でデータベースホスト名を、「データベース用管理者アカウントの発行」を実行したとき保存しておいたメモでIDとパスワードを確認。「wp-config.php」の記載内容と照合、問題なし。→データベースにも正しくアクセスできている
- 「FirstServerコンフィグレータ」からphpMyAdminを起動。WordPressが使用しているデータベースの「照合順序」をいろいろ変更してみる。特に変化なし。(「utf8_general_ci」にしておく)→データベースの設定は関係なし?
- データベースの「○○_options」テーブルで「blogname」を直接編集。データベース内では文字化けせず。→データベースはどうやら無罪
- WordPressの管理画面でも文字化けせずに表示。しかし、やっぱり「変更を保存」を押すと文字化け発生。→WordPressの動作に問題ありそう
- データベースのテーブルをすべて削除して、WordPressを再インストール。でもやっぱり同じ文字化け発生、改善せず。→再現性あり。そろそろ「サーバーが原因か?」と確信し始める。
- 検索しまくる。「WordPress ファーストサーバ 文字化け」のキーワードで、それらしい記事に多数ヒット。
- ヒットした記事によると、どうやらファーストサーバはEUCを標準の文字コードとしており、WordPressの文字化けを解消するにはこれを「UTF-8」に変更すれば良いらしいことが分かる。
- 紹介されている内容で「.htaccess」を作成し、サーバーにアップするも「500 Internal Server Error」が発生。
- 「.htaccess」の内容を確認。問題なし。再び検索。
- 次に見付けた記事に「PHPはDSO版に切り替えてから」という記載があったので、「FirstServerコンフィグレータ」の「PHPインストール」へ。CGI版になっていたので、DSO版に実行バージョンを切り替え。
- 「500 Internal Server Error」が解消。文字化けが残ったままなので、「一般設定」でブログタイトルを修正。
- 「変更を保存」を押しても文字化けせず。解決!
注意点・問題点の整理
WordPressをファーストサーバで使うときは、以下の点に気を付けてください。
- 文字コードの初期値が「EUC-JP」のため、WordPressを使うにはこれを「UTF-8」に変更する必要がある。
- PHPの実行バージョンが最初は「CGI版」になっているので、これを「DSO版」に切り替える必要がある。
長々と経緯を書きましたが、まとめるとこの2つなんですね……。
参考:ファーストサーバよくある質問 FAQ詳細 - 「PHPプログラムが文字化けする、METAタグで指定した文字コードが無視される」
解決法
文字コードを「UTF-8」にする
以下のコードを記述した「.htaccess」を作成し、サーバー(WordPressと同階層)にアップします。
php_flag mbstring.encoding_translation off
php_value default_charset "UTF-8"
Windowsでは「.htaccess」でいきなり作成できる場合もあるようですが、Macではファイル名の先頭に「.」を付けることはできません。
なので、Macユーザーの方はひとまず「htaccess」で作っておいて、アップしてからFTPソフト上で名前を変更すると良いかと思われます。
この「.htaccess」というファイルは、ちょっとでも間違いがあると「500 Internal Server Error」になります。
なので、このエラーが発生した場合には、まず正しく入力されていることを確認してください。
加えて、改行コードを「LF」にしないとエラーになるそうなので、あわせて確認・変更しておきましょう。
参考:ファーストサーバよくある質問 FAQ詳細 - 「PHPプログラムを実行すると、InternalServerErrorになる。」
「FirstServerコンフィグレータ」でPHPの実行バージョンを切り替える
「経緯」でも書きましたが、PHPの実行バージョンを切り替えるには「FirstServerコンフィグレータ」を使います。
ログインしたら、「wwwサーバ機能」にある「PHPインストール」をクリック。DSO版に切り替えてください。
「DSO版」ってよく分からなかったんですが、要は「モジュール版」のことみたいですね。
参考:ファーストサーバ サポートWEB - 「マニュアル:PHPご利用ガイド」
雑感
大山鳴動して鼠一匹。
あぁしんどかった。