WordPress 新規投稿で文字化けする件 ワードプレス

2007年11月15日 テーマ:ICT屋ameblo日記
WordPressME2.23をインストールしました。インストール自体は問題無く完了したのですが、新規記事を投稿した際、記事が文字化けしました。

原因:mysqlのデフォルトのエンコーディングが、S_JISになっている。 WordPressはUTF8で稼動している。このエンコーディング変換の処理がうまくいってない。
実際に画面やページはUTF8で問題なく表示されているのですが、エントリー投稿時にmySqlのDBには、SJISで書き込まれています。それを読み出した際に表示上で文字化けが発生しているわけです。

そもそもmySql自体が別のコンテンツにて使用されているため、エンコーディングをUTF8に変更するわけにもいかず、その対処方法を模索しました。
さらに環境的には、VPSサーバのため、ヴァーチャルホストが幾つか存在し、そのそれぞれのホストで共通のMYSQLを使用しています。

検索してみると、wp-includes/wp-db.php のソースを書き換える件が数本ヒットします。
if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
$this->query("SET NAMES utf8'$this->charset'");
 @mysql_query("SET NAMES utf8", $this->dbh);//←これを追加する
 $this->select($dbname);
}

これでも動作的には解決しませんでした。

そこで結局対処できた方法は、
.htaccessファイルを作成し、
php_flag mbstring.encoding_translation off
php_value default_charset “UTF-8″

の2行を書き込んでhtdocsのrootにアップしました。これで一応文字化けは解消しました。

同一ホストでこれを行うと、mysqlをすでに使用している他のコンテンツで文字化けを起こすと思いますので注意してください。今回は該当バーチャルホストではまだmysqlを利用していなかったため、この対処が有効になりました。ので、当ホストで別機能でmysqlを利用した際には、UTF8にて利用するようにしなければならないわけです。

MT3.3 再構築時にインデックスが500エラーになる件

2007年11月15日 テーマ:ICT屋ameblo日記
movableType(v3.3)を使用しています。3.1からアップグレードした際に、記事投稿時等に作動する再構築時に、Internal server error 500 がでるようになりました。

検証してみると、individualページとカテゴリーアーカイブページ等は正常に構築できており、原因はインデックス(index.php)にあるとわかり、いろいろ検索し対処方法を模索した結果、

MTEntriesタグの中に「recently_commented_on」のタグがあると、投稿記事数が多いほどメモリーが高負荷になるようで、その際にエラーが発生するようです。
また使用しているDBがBerkeley DBであることも高負荷になる要因をつくりだしているようです。


これに対処した方法は、「recently_commented_on lastn=10」という10件までというリミットを設定しました。3.1以前はこのlastnというオプションはなかったようなのですが、3.2以降で追加されているようです。このオプションが無しの場合、過去記事全てのコメントを走査するようでその仕様がメモリーに負荷をあたえるようです。そこでそのタグにリミットとなるlanstn=10という数値を設定した結果、500エラーがでずに再構築が行えるようになりました。



■もうひとつの暫定的対処方法
テンプレートに変更を加えない場合は、「テンプレート > メインページ」の画面にある「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」のチェックボックスをOFFにします。すると正常に再構築されました。

ただしこの場合、新規投稿を行った場合などで、このメインページの再構築が自動で行われませんので、個別に手動で再構築を行う必要があります。

Amebaおすすめキーワード

    アメーバに会員登録して、ブログをつくろう! powered by Ameba (アメーバ)|ブログを中心とした登録無料サイト