XREAにUTF8設置時の文字化け: 4)設置方法まとめ
前回までの記事を踏まえて、XREA s201サーバ に WordPress ME 2.0.2 を、文字コード UTF-8 にて設置する方法をまとめる。
文字化けの原因と思われる MySQL の文字コードと、WordPress の動作に支障のある自動広告挿入に対応するもの。
追記 s216 以降の PHP5 系新サーバは UTF-8 が標準となった(「5) 追加情報」参照)。文字化け対応は不要になると思われる。
本件記事 INDEX
「1) 現象」から順に読んである前提で書いています。
目次:
障害の原因と対処方法の概要
UTF-8 で設置した場合の文字化け
詳細は「3)解決編」参照。
- 原因:
- s201 サーバでは MySQL 5.0.18 の
character_set_serverがujisになっていて、 - サーバ側で
mysqld --skip-character-set-client-handshakeオプションが指定されている(たぶん)
ため、と思われる。
- s201 サーバでは MySQL 5.0.18 の
- 対処: WordPress の DB 接続直後に
SET NAMES utf8を実行するよう、wp-includes/wp-db.phpを修正する。 - php の
mbstring.internal_encodingがEUC-JPになっているが、上記対処をすれば、そのまま WP をインストールしても、.htaccessでUTF-8にしてからでも、どちらでも文字化けは見られなかった。逆に、上記対処をせずに.htaccessでUTF-8にしただけでは文字化けした。
本当に入れるべきかどうかは未確認だが、私は初心者なので問題が生じても気づかなさそうだし、後で問題が判明しても対応できなさそうだし、という理由で、念のためUTF-8にして運用中。下記設置手順にも挿入してある。
WordPress 2.2 以上では SET NAMES の行が本体に組み込まれ、utf8 の部分を wp-config.php で設定できるようになりました。wp-db.php の修正は不要です。
参照: ps*wiki » wp-config.php の編集 - データベース・キャラクタセット
wp-config.php で define('DB_CHARSET', 'utf8'); と設定すると、この値が wp-db.php 86-87行目(↓)の $this->charset に渡り、SET NAMES 'utf8' になります。
if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
$this->query("SET NAMES '$this->charset'");
自動広告挿入の影響と思われる動作障害
- 障害事例:
- ブラウザでの表示は問題なさそうに見えるが、XHTMLソースの1行目がブランクになる。
- RSS の先頭行もブランクなので、RSSリーダで読めなかったり。
- ファイルアップロード画面等、広告が挿入されることにより、見辛らい or 見えなくなる画面あり。
# 管理画面の右上にサインアウト等の文字があるとは。。。(^^; - プラグイン Extended Live Archive の設置が最初は上手くいかなかった(自動広告のせいかパーミッションの設定で手間取ったせいかは不明)が、手動広告後にやり直したときには、スムーズに設置できた。
- 対処:
.htaccessで自動広告挿入をオフにし、手動広告挿入にする。<!--nobanner-->ではダメ(ブランク行が出る)。 - 自動広告は Ads by Google だが、手動広告だと Valueclick の画像バナー広告になるのは勘弁。(;_;)
設置手順
私は、自動広告のまま WordPress を設置し、後から広告を手動挿入に切り替えたが、今のところ問題は見られない。
もしかしたら、自動広告オフ → WP設置 → 手動広告挿入 という順がよいのかもしれないが、私はその順序では検証していないので、以下には、私が実際に行った順序のまま記すことにする。
前作業
私は過去に DB を UTF-8/WP を EUC-JP で設置してテスト等を行っていたため、事前に次の作業を行っておいた。- DBバックアップ: 過去の投稿・DB状態を保存。念のため3種類の方法で。
- XREA 管理画面にて UNICODE で DB 保存
- phpMyAdmin にて DB をファイルとしてエクスポート(csv、SQL)
- XREA 管理画面にて DB 削除。
- DBバックアップ: 過去の投稿・DB状態を保存。念のため3種類の方法で。
DB 作成
- XREA 管理画面にて UNIDODE で DB を作成。
- DB 作成完了まで少し時間がかかるので、その間に文字化け対応をしておく。
WP ME 2.0.2 の修正
DB に接続した直後にSET NAMES utf8を行うよう修正する。WordPress 2.2 以上では、この修正の替わりに
wp-config.phpで設定します。wp-includes/wp-db.php57行目付近に1行挿入。42 function wpdb($dbuser, $dbpassword, $dbname, $dbhost) { 43 $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword); 44 if (!$this->dbh) { 45 $this->bail(" 46~53 中略 54 "); 55 } 5657 mysql_query("SET NAMES utf8", $this->dbh);58 $this->select($dbname); 59 }- 修正済み WP 一式をアップロード。
- DB 作成が完了した頃に、phpMyAdmin にて DB の文字コード関連の状態をチェック。チェック箇所は 解決編 参照。
.htaccess 修正
WP 設置ディレクトリ(or ルート)の.htaccessに次の1行を追加。1
2php_value mbstring.internal_encoding UTF-8- WP 設置ディレクトリを書き込み可能にする(パーミッションを 707 へ変更)。
WP ME 2.0.2 インストール
- cf. WordPress Japan » 新規インストール手順 (ME 2.0.2)
- 文字コードは UTF-8 を選択。
- インストールが正常終了したら、WP 設置ディレクトリをセーフティパーミッション (705) に戻す。不要ファイルも削除。
- ブラウザで見て、文字化けしていないことを確認。
- phpMyAdmin にて、DB の状態と、格納データが化けてないかをチェック。詳細は 解決編 参照。
自動広告→手動広告への切り替え
- まずは、ブラウザで WP のページを表示し、ソースの1行目がブランクになっていること等を実際に確認すべし。
- WP ディレクトリの
.htaccessにより自動広告をオフにする。
cf. - 広告が表示されなくなったこと、ソースの1行目がブランクになっていないこと等を確認。
- XREA 管理画面 > 広告HTML をクリック
- ●広告HTML に表示されるソースコードを[全て選択]してコピー。
wp-content/themes/使用テーマ/header.php3 の <body> 直後等、XREAの規定に合う位置に、コピーした広告HTML をペースト。- WordPress が生成するコードは XHTML 1.0 Transitional だが、XREAの広告HTML は HTML なので、ペーストしたコードを XHTML 1.0 Transitional に合うよう修正。
(参考) - 修正済み
header.phpをサーバにアップロードし、広告表示やソースが正しいこと等を確認。
WP セッティング・運用開始
運営方針に合わせて WP のセッティングを行い、運営開始。
cf. WordPress Japan » スタートガイド, Wordpress ME 2.0 - Docs- スパム対策プラグイン Akismet は、デフォルトでは無効化されているので、有効化するのを忘れずに。 cf. スタートガイド, Akismet くん、ひそかに活躍中でした。
- 画像アップロード時に「アップロードされたファイルを に移動できませんでした。」と表示されたら:
「Wordpress ME 2.0 - Docs » SAFE MODE 環境での対応」を参考に、あらかじめ手動でアップロードディレクトリを作成し、書き込み権限を与える。アップロード先を日付別ディレクトリにしない場合は、一度だけwp-content/uploads/ディレクトリを作成してパーミッションを 707 にすれば OK。
SAFE MODE への別の対処方法 追記
セーフモードでは支障のある機能の php ファイルのみを、CGI として実行できる。(ユーザー権限で実行、セーフモード off )
- XREA SUPPORT BOARD » PHPをCGIとして動かす方法について
- Numb. » XREA で WordPress ファイルアップロード機能を利用する —
wp-admin/inline-uploading.phpを指定 - WordPress Japan » ME2.0.4、SafeModeでプラグインが動きません — 複数ファイルを指定する場合
未解決事項
「3)解決編」 参照。
- 冒頭に書いた理由で一応入れてある。[back]
- 追加後の phpinfo : 文字コードに関連しそうな箇所を抜粋。
Configuration : PHP Core Directive Local Value Master Value default_charset no value no value output_buffering 4096 4096 output_handler no value no value mbstring Multibyte Support enabled Multibyte string engine libmbfl Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 3.7.1 mbstring extension makes use of “streamable kanji code filter and converter”, which is distributed under the GNU Lesser General Public License version 2.1.
[back]Directive Local Value Master Value mbstring.detect_order auto auto mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output pass pass mbstring.internal_encoding UTF-8 EUC-JP mbstring.language Japanese Japanese mbstring.strict_detection Off Off mbstring.substitute_character no value no value - 大抵のテーマでは
header.phpは全ページに使われるので、ここなら一箇所にコードを挿入するだけで済むかと。[back]



WordPress2.0.6 アップデート…
WordPressを2.0.6へアップデートしました。基本的には、上書きアップデートするだけで良いのですが、いろいろファイルに手を入れていたりすると、比較しなくてはなり (more…)
文字コードをUTF-8に…
Wordpressをインストールする時、『特にこだわりがなければ文字コードはEUCで構いません・・・』とか何とか言うメッセージが出るので、ワタクシはそのままEUCでイン (more…)
[...] 毎度のこと、wp-db.php の修正が必要でした。 この wp-db.php を修正する前に、K2がエラーを吐いていたのですが、wp-db.php を修正し文字化けを解消するとエラーは消えました。 http://bono.s201.xrea.com/2006/05/12-utf8_xrea_4/ こちらで、XREAの文字化け解消方があります。ぜひ詰まったら参考にしてはどうでしょう。 [...]
WordPress 2.1導入は茨の道…
今後のことを考え、ブログ移転と同時にシステムを「WordPress 2.1」に置き換えることを検討しており、その予行練習としまして、まずローカル環境に「WordPre (more…)
鯖引越し完了しますた【文字コードにやられたの巻】…
… (more…)
>Sa・Gaさん
ローカルでの文字化けが解決されたこと、他の記事で拝見しました。当時、お手伝いに伺えなくてすみませんでした。(・;)
文字化けの仕方が、ひろまささんや私のときと違ってましたね。いろいろなケースがあって難しいなあ。。でも、解消してよかったですー。(^-^)
>maimaiさん
はじめましてー。
EUC-JP で運用したいという、うちとは逆のケースだったのですね。
s215 以前のサーバか s216 以降の PHP4 系サーバだったら、EUC-JP がデフォルトなのですけれど、PHP や MySQL のバージョンの希望がある場合、文字化け対応が必要になってしまいますね。ううむ、やっぱ難しい。。
「DB 保存」でバックアップ取得されることがあったら、文字化けしてないかチェックしてみてくださいー。
うちは UTF-8 なのですが、テキストエディタで UTF-8 で開くと文字化けしてしまいます。(・;)
WordPress2.1.2 XREA+でPing(Trac…
先日までの記事でPingoo!に登録し、ブログ村にも登録したのですが、何だか様子がおかしい。
記事投稿画面の「トラックバック」欄にPingのURLを入れて送信してみたら (more…)
[...] MySQL4.1.xにおけるWordPressの文字化け回避法 [...]
[...] power source* » XREAにUTF8設置時の文字化け: 4)設置方法まとめ [...]
[...] 参考:power source* » XREAにUTF8設置時の文字化け: 4)設置方法まとめ Wordpress::EUCからUTF8への移行方法 : gomlog [...]
[...] 沢山の先人達のお陰である。有難や。 http://bono.s201.xrea.com/2006/05/12-utf8_xrea_4/ http://bono.s201.xrea.com/2006/06/158-wp_directory/ http://bd.dotted.jp/archives/56/ [...]
[...] power source ≫ XREAにUTF8設置時の文字化け: 4)設置方法まとめ [...]
[...] XREAにUTF8設置時の文字化け: 4)設置方法まとめ [...]
[...] power source様。 [...]