wordpressの移設

今まで、バージョンアップが面倒(難しい)ので、wordpressは、ME1.5と言う古いのを使用していました

今回、サーバーを新しいのに更新し、linux,mysql,php等を最新のにしたら、wordpressが phpのエラー(正確にはワーニング)を表示するんです

Strict Standards: Only variables should be passed by reference in /hogehoge/legacy-b4/wp/wp-includes/gettext.php on line 66
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /hogehoge/legacy-b4/wp/wp-includes/functions-formatting.php on line 76
Warning: preg_replace_callback(): Requires argument 2, ‘ stripslashes(‘$1′) . clean_pre(‘$2′) . ‘

' ',
to be a valid callback in /home/localhost/legacy-b4/wp/wp-includes/functions-formatting.php on line 76

調べると、構文の使い方がよろしくないので新しいバージョンでは使わないでくれ
ってワーニングなんですが、それがどこか logに記録されるのならまだしも、ブログのページ上に表示されるのでかっこ悪いんです
また、その該当する命令が、.phpのプログラムのあらゆる所に使われているという

php.iniの
display_errors = On
を Offとすればワーニング出ないんですが、それで見なかったことにするのもちょっとオイオイなんで、重い腰を上げて wordpressを最新版にしました!!

難しかったこと
文字コードが、ME1.5はlatin1、3.91はUTF8と異なる
mysqlのtable構造も異なる
wordpressのページにはこうやればバージョンアップできると書いたページがある (が、試したができなかった。ME1.5じゃダメ?)

と言うことで、以下の方法でブログの中身を最新の ver3.91へ持ってきました

(1) 古いサーバーより mysqldumpコマンドで発言のテーブルのみを mysqlからバックアップ
(2) 新しいサーバーへ持ってきて iconvコマンドで文字コード変更
(3) 新しいサーバーへ mysqlコマンドでバックアップをリストア
(4) insert文を使って、新しい databaseへ必要な tableのみをコピー

これやっても、カテゴリーは table構造がまるで異なっていて復元できなかったなぁ
まあ、チマチマ、カテゴリーだけは設定していくか、、、、、

ちなみに (1)から (4)で使用したコマンドは
(1) mysqldump db名 wp_posts --default-character-set=latin1 > old.sql
(2) iconv --byte-subst=X -f EUC-JP -t UTF-8 old.sql > UTF8.sql
その後、このファイル内の文字列 latin1を UTF8に変更
別の database名で新しい wordpressを起動して、table構造を作成しておく
(3) mysql -u root wp < UTF8.sql
(4) mysqlに入っておいて use 新しいdb名
delete from wp_posts; をして、新しいテーブルをまず削除しておく
次に wp.wp_postsより、新しいdbのwp_postsへ必要なテーブルのみをコピーする
insert into wp_posts (ID,post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_password,post_name,to_ping,pinged,post_modified,post_modified_gmt,post_content_filtered,post_parent,guid,menu_order)
select ID,post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_password,post_name,to_ping,pinged,post_modified,post_modified_gmt,post_content_filtered,post_parent,guid,menu_order
from wp.wp_posts

これで一応表示するようにはなりました、、、、ふぅ