ホームページ制作 オフィスオバタ

EC-CUBE2.13からEC-CUBE4.3へデータ移行をやってみたお話。

EC-CUBEをさせていただいていると、あるあるなのが2系から4系へのバージョンアップです。
具体的には、4系でリニューアル再構築をおこない、データを複製することです。

リニューアル作業自体は、通常制作と同じなので難易度は高くないですが、データの移行の難易度が高いと感じていました。

なぜならば今までの経験上、商品データを移行しても、規格やカテゴリ情報が移行されなかったり、受注履歴が移行されないなど、完全データ移行は簡単にはできませんでした。

ところが、最新のEC-CUBE4.3とそれに対応したデータ移行プラグインを使用すると、スムーズに移行ができました。

今回は、そのやり方を忘備録として記録します。

EC-CUBE4.3側の事前準備

(1)データ移行プラグインをインストールする

まずはデータ移行プラグインを準備します。
EC-CUBEのプラグイン検索から、データ移行プラグイン(4.2/4.3系)を探し入手、インストールをします。

(2)プラグインを有効化する

データ移行プラグインがインストール出来たら、有効可します。

プラグイン有効化しても歯車マークが出てこない場合

私は、データ移行プラグインインストールし、有効化しても歯車マーク(設定ボタン)が表示されませんでした。
ですが、EC-CUBEをいったんログアウトし、再度ログインしなおすと表示されました。

EC-CUBE2系のデータをバックアップ

EC-CUBE2系から4系へデータ移行する場合、2系側にはプラグイン等を入れる必要はりません。
標準機能のバックアップデータから4系へ移行します。

2系のAUTH_MAGICの値を控えておく

2系のconfigからAUTH_MAGIC値を控えます。
古い2系の場合、data/install.phpに記述があります。
比較的新しい2系の場合、data/config/config.phpに記述があります。

データバックアップからデータ移行をすると、パスワード等も以降されます。
パスワードはAUTH_MAGICの値で暗号化されるため、データバックアップ時のAUTH_MAGIC値と異なっていると、管理画面にログインできなくなります。

それを何とかするために、EC-CUBE4系のAUTH_MAGIC値に、2系の値をセットする必要があります。

EC-CUBE4のデータ移行プラグインから、2系のバックアップデータを読み込む

ここまで来たらいよいよEC-CUBE4へデータを読み込みします。
EC-CUBE4にもともと入っていたデータは消えますが、新規構築なので問題ありません。
早速読み込みを実行してみました。

(1)データ移行プラグインからEC-CUBE2系のバックアップデータを読み込む

読み込みをいざ実行してみたところ、不可思議な現象がおきました。
何も動きません。

バックアップファイルが10M以上の場合、メモリサイズの設定変更が必要

データ移行プラグインのデフォルトサイズは10Mまでとなっています。
ですが、今回の移行データは30Mありました。
サイズエラーではじかれていました。

これを何とかするためには、上限値10Mを増やす必要があります。
そのやり方がこちらです。

メモリの最大値を増やす方法

EC-CUBEの.htaccessから設定できます。
10Mと書かれているところを任意の大きさに書き換えます。
(例では60Mに設定しています。)
一応php.ini側では、もっと大きい値を設定していますが、.htaccessのほうが優先されているようでした。

さらに実行エラーが出た場合の対処方法

UPLOADサイズもクリアし、再度プラグインからバックアップファイルの読み込みを実行してみたところ、今度はPHPの致命的エラーが発生しました。

原因は、「総メモリが足りないエラー」なので、php.iniのmeory_limit値を大きくすれば改善します。
ちなみに今回は512M→1024Mに設定してエラーが出なくなりました。

ようやくデータ移行できました。

想定外のエラーがいくつか起こりましたが、ひとつづつクリアし、無事データ移行ができました。

最後に.envファイルのAUTH_MAGIC値を書き換える

データ移行が完了すると、強制的にログアウトしました。
ただ、このままだとログインできません。
次のことをしてやる必要があります。

バックアップファイルからデータ移行しているため、ID、パスワードも変わってしまいます。
パスワードは、AUTH_MAGICに設定された値を使って、暗号化・復号化されるため、同じ値でないとログインできないことになります。

EC-CUBE4.3の管理画面にログインすると、すべてのデータが移行されていました

管理画面に入り、データがちゃんと移行されているか確認したところ、商品データ、規格、カテゴリ、受注一覧、顧客情報など一通り入っていました。

ちゃんとプラグインで復元できました。

最後に、メンテナンスモードを解除して完了です。
データ移行プラグインを実行すると、自動でメンテナンスモードになるようです。
うっかり忘れていると、お客様がアクセスできない状態になります。

モバイルバージョンを終了