【ZenCart覚書】サーバ移転メモ

2011年8月22日

Rapidsiteサーバから同種サーバ・同URLへの移転メモです。

■管理人ログのリセット
まず初めにやらないといけないのが、管理画面で管理人ログのリセット。
admin_activity_log の容量が多すぎて、インポート容量を超えてました。

■MySQLのdump
dump方法はec-cubeのときと同じです。
今回も変換はせずujisで読み込みました。

■ /includes/configure.php の設定

通常の引越しであれば以下の2つのファイルだけを適切に変更すればよさそうです。
(変更の必要がない場合もあります)
/includes/configure.phpは、55~57行目あたり
/admin/includes/configure.php は、81~83行目あたり

define(‘DB_SERVER_USERNAME’, ‘XXXXXXXX’);
define(‘DB_SERVER_PASSWORD’, ‘XXXXXXXX’);
define(‘DB_DATABASE’, ‘XXXXXXXX’);

今回は、/admin/includes/configure.phpに、
ドメイン切り替え前の設定が残っててそれも直さなければいけなかったのですが、
そういう場合は、旧サーバの方でちゃんと動くのを確認してから、
新サーバ用に直した方がよさそうです。後に問題が出てきた時の切り分けのために。

<参考>
http://zen-cart.jp/bbs/viewtopic.php?f=2&t=2354

■バーミッションの変更

ここの公式ガイドの「フォルダにパーミッションを設定する」の項を参考にて。
http://kyms.ne.jp/zcdocs/before/1.readme_installation.html

次に、以下のディレクトリのパーミッションを「777 (read/write/execute)」に設定します。

/catalog/cache
/catalog/images
/catalog/includes/languages/english/html_includes
/catalog/media
/catalog/pub
/catalog/admin/backups
/catalog/admin/images/graphs

注意:”catalog/images” ディレクトリを開き、全てのサブディレクトリ、そのサブディレクトリまで「777」に変更してください。例として(これはリストの一部ですが)
/catalog/images/attributes
/catalog/images/dvd
/catalog/images/large
/catalog/images/large/dvd
/catalog/images/medium
/catalog/images/upload

注意: /images 内のディレクトリ、サブディレクトリ内でひとつでもパーミッション変更に漏れがあると、後で「ディレクトリに書き込みができません」というエラーメッセージが発生するでしょう。

その他のフォルダーとファイルに関しては、CHMODを644もしくは444にしてください。これはあなたの契約しているサーバーの設定次第です。

これに加えて、

/includes/configure.php
だけは、444にしないと、サイト上部に警告メッセージが出ます。
逆に修正してFTPで上書きするときは、644とか書き込みOKなパーミッションにしないと上書きできないです。
全部444にした方が安全なんだろうけどもね。。。
(20100406_間違い情報あったので文言修正しました)

サブフォルダは、以下の2つのみ777に変更すればOK。
image/large/dvd
image/large/microsoft

■管理画面にログインできない!【/admin/includes/configure.phpの修正】

<現象>
合っているものを入れるとフィールドが空になって同じ画面に。
間違っているものを入れると、間違ってると出る。
試しにパスワード再送信とやると、普通にメールに送られてきてパスワード変更されてしまったので、プログラムは正常に動いてるようです。
フィールド

どうやら新サーバになって、PHPのバージョンが4から5.2.6にあがったためのバグのようです。解決法は以下。
http://www.rapidsite.jp/support/manual/rv8/e_7085.html

ZenCartにログインできない

ZenCartにログインできない

configure.php二つあるので、上の現象について直すのは、
/admin/includes/configure.phpの方です。

85行目あたり、define(‘STORE_SESSIONS~の記述の行の「db」だけ取る。

zen-cartでログインができない
http://forum.tsukaeru.net/viewtopic.php?t=3189

このページの書き換えは試してみたけどダメだった
http://www.zen-cart.com/forum/showthread.php?p=287587#post287587

PHP4.1.2の場合に有効そうな対処方法
http://www.zen-cart.jp/index.php?cmd=read&page=FAQ%2F%C0%DF%C4%EA%B4%D8%CF%A2%A4%CE%A5%C8%A5%E9%A5%D6%A5%EB#content_1_2

■ユーザーもログインできない!【includes/configure.phpの修正】
/admin/includes/configure.php を直すんだったら、
includes/configure.php も直さないといけないのでは?
と気になりつつ放置してたら、やっぱりそうだった(爆)

<現象>
ユーザーがログインできなくなる
ログインしようとすると、ログイン状態にならずにトップ画面に戻る
※会員登録はできる

include/config.php を上と同じ記述にしたら直りました。
59行目あたりです。

■hostsファイルのDNS切り替えにwww付きのものも追加する。

これは自分の使っているサーバ固有の現象だったのですが。

最後に注文がうまくできるか確認したときに、
hostsファイルのDNS切り替えがうまくいっておらず手間取った。

<現象>
・管理画面に注文分が反映されない

<原因>
表画面が知らず知らず旧サーバのものになっていて、
注文は旧サーバ内で処理されてしまってた。
hosts設定が効いてなかった。
どうやら、wwwのないときは、新サーバのものを読み込んでるようなのだが、
www付きだと旧サーバのものを読み込んでる模様。
zencartは購入画面で自動的にwww付きになってしまうので、
hostファイルに、www付きのものを加えたら、読み込むようになった。

■注文受付用のメールボックスも作成

<現象>
・注文受付メールが入らない(注文者への自動送信メールは届く)

<原因>
結局、表画面で注文してたので、
注文受付のメール自体は旧サーバのメールボックスに入ってたのだが、
サンダーバードで設定していたメインアドレスが
既に同じ新サーバ内にあるものなので、
それにひきずられて、新サーバのメールボックスを読み込む設定になってしまった。
(なので、メールボックスを至急作った)
これは変更できないので、新サーバへのDNS切り替えが完了するまで、
旧サーバのメールを見るには、Webメールで確認する必要がある。

なので、次回、別のzencartサイトを移転するときには、
先に注文受付メールのメールボックスも作っておく必要がある。

最終的には新サーバの表画面で問題なく注文でき、
自動送信メール、注文受付メールも送られたので、OK!
商品登録も問題なくできました。

3/12追記
■移転前(DNS切り替え前)にテスト購入するときの注意

一般設定→メールの設定
以下の2つの項目を、テスト用のものに変更。

・注文確認メール(コピー)送信先
・ショップ運営者の注文ステータスメール(コピー)の送信先

■切り替え直前の注意

・商品数の確認(必要があればデータのdump)
・受注内容の最新期日の確認(必要があればデータのdump)
・imagesディレクトリを最新のものにする