wordpress アップグレードのメモ
/public_html/の
ディレクトリ wp-*, media と全てのファイルを
wordpress_oldディレクトリに退避
xrea control panelからwordpressディレクトリにwordpressインストール
phpMyAdminで
データベースにある
wp_* テーブルの接頭辞を wp_old に付け替えて退避
/wordpress にアクセスして初期設定
phpMyAdmin
wp_* テーブルの接頭辞を wp_org に付け替えてを退避
(wp_commentmetaはoldファイルにないのでそのまま)
wp_old_* テーブルを接頭辞を wp に付け替えてコピー
→ページにアクセスしたが、画面が真っ白で失敗
次に
データベースを戻さず
退避しておいたwordpress_oldから
FFFTPの名前変更で先頭に ../ をつけて
/public_html/直下にもどし、
./wp-setting.php の中の
データベースの接頭辞を “wp_” → “wp_old_”として
退避しておいたデータベースを使用する。
そのままではアクセス権がないと表示されるので
データベース内の「wp_old_options」の「option_name」フィールドにある
「wp_user_roles」を「wp_old_user_roles」に変更
加えて「wp_old_usermeta」テーブルの「meta_key」フィールドにある
「wp_*」を「wp_old_*」に変更
./wp-login.php にアクセスしてログインしようとするとエラーが出るので
エラーの出てる箇所を見てみると
$変数名 =& ほげほげ;
などと書かれていたので、=& を = に直す。
(おそらくPHP5からは参照を代入することができなくなったので、参照から値を代入して代用した。サーバのメモリにはあまり優しくないとおもう。)
上記を以下のファイルに適用
./wp-setting.php
./wp-includes/cache.php
./wp-includes/query.php
./wp-includes/theme.php
管理画面に侵入成功。(でもまだ色々エラーは吐いている。)
とりあえずxml形式でエクスポートして
新しい方(/public_html/wordpress/ にインストールしてある方)にインポートしてみる
が、失敗。
インポート側の Plugin が WordPress 3.0 以上の対応であることが原因らしい
エクスポート側 WordPress は 2.7
3.0以上にアップグレードしてみる。
プラグインをきろうとするとエラー。
Fatal error: Cannot redeclare 関数名
関数名が重複しているらしい。
中身を見てみると実行しているphpにある関数と、includeしたphpの関数が一緒の名前
phpでは関数の上書きができたのかもしれない。もしくは上で変更した参照の代入のところが悪さをしているのかも。
とりあえず、関数の中身はほぼ同じなので、実行している方が要素が少ないので関数全体をコメントアウト
./wp-admin/includes/file.php
144行目あたり get_temp_dir()
./wp-admin/includes/image.php
135行目あたり wp_load_image()
./wp-admin/includes/template.php
363 checked()
377 selected()
2608 wp_convert_hr_to_bytes()
2630 wp_convert_bytes_to_hr()
2646 wp_max_upload_size()
./wp-includes/user.php
2300 reset_password()
2325 register_new_user()
そうすると更に
Fatal error: Call to undefined function 関数名
関数がないらしい。
とりあえずコメントアウト(
./wp-admin/admin.php
90 //set_screen_options();
191 // set_current_screen();
129 // $screen = get_current_screen();
./wp-admin/index.php
35 //$screen = get_current_screen();
・・・壊れ始める。
バックアップから元に戻す。
./wp-admin/index.php
./wp-admin/admin.php
./wp-includes/user.php
編集するファイル間違えていたらしい。(別ディレクトリのuser.phpをDLしていた。)
Fatal error: Cannot redeclare 関数名
./wp-includes/user.php
254 delete_usermeta()
290 get_usermeta()
341 upgrate_usermeta()
231 get_users_of_blog()
107 get_profile()
・・・きりがないので元に戻す
./wp-includes/user.php
./wp-admin/includes/template.php
./wp-admin/includes/image.php
./wp-admin/includes/file.php
./wp-admin/includes/image.php
./wp-admin/includes/file.php
戻したが完全に壊れる(笑)
復旧は無理そうなので、とりあえず WordPress Importer の対応で
WordPress 3.0.1 を別フォルダにインストール
その際 /wp-setting.php のデータベース接頭辞の変更(wp_old_)と
wp_old_options の中の id = 1 の option_value を インストール先ディレクトリに変更
無事起動
日記データエクスポート
しかし、またもや移行先の WordPress でインポートできず。さっきと同じ「ファイル名が存在しません」。
WordPress Importer のバージョンを 0.2 にしてみたけどだめで、
phpファイルの中身を色々解析したら、どうもファイルIDが
ずっと 0 でおかしいと
さらにデータベースを見たら、wp_post の id に 0 が連発。
id は 主キーでユニークっぽい
どうやらインストールかデータベース作成に失敗したみたいだ
(これを見つけるのに数時間かかった)
再インストール
ついでにサイト使用量が 120/150MB くらいでギリギリなので
いらないファイルを削除して、インストール失敗をしないように願う。
!!!
インポート完了。
インストール失敗が原因かよ。現在AM4:32。