はじめに

このタイトルで記事を書いているということは一応ブログの新サーバーへの移行は成功したとのことですが、結構紆余曲折はありました。同じような問題を抱えている方もいらっしゃるかもしれないので、私が取った手順をまとめておきます。(お急ぎの方は「エクスポートとインポートを使う」からお読みください)

WordPress簡単移行

 

 

結論を先に言うと、これは使えません!

説明どおりエックスフリーサーバーでの URL、ID とパスワードを入力し移行すると、エラー表示がでます。
おまけにその状態でエックスフリーサーバーの管理画面にログインしようとすると、次のようなエラーメッセージが出て先に進めなくなります。

Root URL を ~ で表記

Fatal error: Uncaught Error: Call to undefined function exec() in ~/wp-content/plugins/xserver-migrator/packages/class-xserver-migrator-server.php:154 Stack trace: #0
~/wp-content/plugins/xserver-migrator/packages/database/class-xserver-migrator-database-dumper.php(9): Xserver_Migrator_Server::is_available_mysqldump() #1
~/wp-content/plugins/xserver-migrator/packages/class-xserver-migrator.php(64): Xserver_Migrator_Database_Dumper->__construct() #2
~/wp-content/plugins/xserver-migrator/packages/class-xserver-migrator.php(81): Xserver_Migrator->__construct() #3
~/wp-content/plugins/xserver-migrator/xserver-migrator.php(70): Xserver_Migrator::get_instance() #4
~/wp-includes/class-wp-hook.php(324): run_xserver_migrator('') #5
~/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #6
~/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #7
~wp-settings.php(559): do_action('plugins_loaded') #8
~wp-config.php(98): require_once('/home/playthepa...') #9
~wp-load.php(50): require_once('/home/playthepa...') #10
~/wp-admin/admin.php(34): require_once('/home/playthepa...') #11
~/wp-admin/index.php(10): require_once('/home/playthepa...') #12
{main} thrown in ~/wp-content/plugins/xserver-migrator/packages/class-xserver-migrator-server.php on line 154
この Web サイトに重大なエラーが発生しました。サイト管理者のメール受信箱で手順を確認してください。問題が解決しない場合は、サポートフォーラム をお試しください。

WordPress のトラブルシューティングについてはこちらをご覧ください。

{"success":false,"data":{"message":"154: Uncaught Error: Call to undefined function exec() in ~/public_html\/wp-content\/plugins\/xserver-migrator\/packages\/class-xserver-migrator-server.php:154
Stack trace:
#0 ~/public_html\/wp-content\/plugins\/xserver-migrator\/packages\/database\/class-xserver-migrator-database-dumper.php(9): Xserver_Migrator_Server::is_available_mysqldump()
#1 ~/public_html\/wp-content\/plugins\/xserver-migrator\/packages\/class-xserver-migrator.php(64): Xserver_Migrator_Database_Dumper->__construct()\
#2 ~/public_html\/wp-content\/plugins\/xserver-migrator\/packages\/class-xserver-migrator.php(81): Xserver_Migrator->__construct()
#3 ~/public_html\/wp-content\/plugins\/xserver-migrator\/xserver-migrator.php(70): Xserver_Migrator::get_instance()
#4 ~/public_html\/wp-includes\/class-wp-hook.php(324): run_xserver_migrator('')
#5 ~/public_html\/wp-includes\/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
#6 ~/public_html\/wp-includes\/plugin.php(517): WP_Hook->do_action(Array)
#7 ~/public_html\/wp-settings.php(559): do_action('plugins_loaded')
#8 ~/public_html\/wp-config.php(98): require_once('\/home\/playthepa...')
#9 ~/public_html\/wp-load.php(50): require_once('\/home\/playthepa...')
#10 ~/public_html\/wp-admin\/admin.php(34): require_once('\/home\/playthepa...')
#11 ~/public_html\/wp-admin\/index.php(10): require_once('\/home\/playthepa...')
#12 {main}
thrown","operation":"general"}}

訳が分からなくなったのでシンクラウド ユーザーコミュニティに質問を投げてみると、プラグインの xserver-migrator が悪さをしているとのこと・・・

そこで FFFTP を使って ~/wp-content/plugins/xserver-migrator を削除、その後エックスフリーサーバーの管理画面にログインできるようになりましたが、再度 WordPress簡単移行を試してみても同じことの繰り返しなのでこの方法は諦めました。

さらにフォーラムの別の回答で、エラーメッセージの冒頭にある「未定義関数 exec() の呼び出し」について「XFreeのPHPはexec()が使えないようにされている」との情報を得ましたのでさらに確信を深めました。

シンフリーサーバーに説明されている手順での試行

 

つづいてシンフリーサーバーの公式ページで説明されている「WordPressの移転」の手順を試してみました。詳細は同ページを参照していただくとして、バックアップはバックアップ用のプラグインを用いますが以下 BackWPup を例に説明します。

データベースのバックアップは BackWPup のダッシュボードにある「データベースのバックアップをダウンロード」ボタンをクリックすることで行えます。*.sql ファイルをに自分の PC の任意の場所にダウンロードして保存します。

 

コンテンツ等のバックアップはジョブの設定をしたのち実行し、ログからダウンロードを実行します。Windows であれば zip 形式でダウロードすればよいでしょう。

 

ファイルのアップロードには上記 FFFTP を使います(かなり時間がかかります)。

ただしこの方法もうまくいきません。アップロード後数日経っても管理画面にログインしようとすると「無効なページです・・・」設定中なのでもう少し待て見たいなメッセージが出るだけです。ファイルマネージャで構成などを確認してもちょっと見ただけでは不具合は特定できませんでした。

エクスポートとインポートを使う

 

最後の手段としてエックスフリーでエクスポートした内容をシンフリーでインポートする方法を試みます。

まず前項でアップロードした ~/public_html/ 以下のファイルをファイルマネージャか FTP ですべて削除します。シンフリーサーバーに移転時に連絡のあった FTP の ID やパスワードでうまく接続できないときは、サーバーパネルの「FTP>FTPアカウント設定」でFTPアカウントを追加します。

 

サーバーパネルの「WordPress > WordPress 簡単インストール」で新しい WordPress を MySQL を含めインストールします。なおエックスフリーサーバーの時は任意のドメイン名を付与できましたが、シンフリーサーバーでは cf〔6桁の数字〕.cloudfree.jp となっていて独自ドメイン名にしたい場合は有料サービスとなるようです。サブドメインの追加に関しても同様です。DNS の管理のリソース削減のためでしょうがサービスの質としてはいささか疑問が残ります(無料なので文句は言えませんが)。

 

さて、準備が整ったのでエックスフリーサーバーの WordPress 管理画面に入り、「ツール>エクスポート」を表示させ、「すべてのコンテンツ」を選択して「エクスポートファイルをダウンロード」ボタンをクリックします。

 

*.xml ファイルを自分のPCの任意の場所にダウンロードし保存します。

続いてシンフリーサーバーの WordPress 管理画面を開き、「ツール>インポート」で WordPress インポーターの実行を選択し、先ほどダウンロードした xml ファイルをインポートします。FTP の場合と違ってエクスポートもインポートもほとんど時間がかからないようです。

さて、デフォルトのテーマを使いカスタマイズもしていない場合はこれで作業は終わりですので、サイトを表示させ確認します。

でも大抵自分の気に入ったテーマや何らかのカスタマイズをしていると思われますので、ここから細部の設定を再度行っていきます。つまりこの方法ではテーマ、プラグイン、カスタム設定の内容はコピーされません。またコンテンツ内リンクのルート URL の自動読み替えはされませんので、固定ページ、投稿の相互間でリンクを貼っている場合はその再設定が必要となります。

  • テーマのインストール:自分の使っていたテーマをインストールし、有効化します。
  • プラグインのインストール:必要なプラグインをインストールし有効化します。
  • テーマのカスタマイズ:固定ページ、投稿ページを個別に設定している場合、レイアウト、パターン、ウィジェット、メニューなどを調整します。
  • リンクの確認と変更:固定ページ及び投稿の相互リンクを一つずつ確認し、旧 HP の URLとなっている部分を新 HP の URL に置き換えていきます。始めから相対アドレスでリンク情報を記述してい場合はこの作業は必要ありませんが、WordPress では通常手順でリンクを挿入すると絶対アドレスとなってしまうようです(注)。

(注)Windows の copilot にリンクの絶対アドレスを相対アドレスに変更する方法を尋ねたところ、functions.php に次のコードを追加するようにとの回答でした。

// 絶対パスを相対パスに変更する関数
function make_href_root_relative($input) {
return preg_replace(‘!http(s)?://’ . $_SERVER[‘SERVER_NAME’] . ‘/!’, ‘/’, $input);
}

// パーマリンクを相対パスに変更する関数
function root_relative_permalinks($input) {
return make_href_root_relative($input);
}

// フィルターを追加
add_filter(‘the_permalink’, ‘root_relative_permalinks’);

 

当然エクスポート前に実施しなけらばならないのだろうけれど、手作業でほぼ一日かけて変更した後だったので試していません。

試される方は自己責任でお願いします。事前バックアップも忘れずに。

以上

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です