Zen Cart(EUC-JP)をUTF-8へ移行する際の覚書

環境

Zen Cart日本語公式サイトで配布されていたEUC-JPのZencartをビッグマウスさんが配布しているZencart(UTF-8版)へ移行することがあったので、その際のエラー内容や修正作業などをメモしておきます。

移行前のZencart

  • Zen Cart 1.3.0.2-l10n-jp-5
  • データベースのパッチレベル: 1.3.0.2-l10n-jp-5
  • Zencartのファイル郡もデータベースもEUC-JP

移行後のZencartは以下のものです。

  • Zen Cart 1.3.9h
  • データベースのパッチレベル: 1.3.9
  • Zencartのファイル郡もデータベースもUTF-8

修正箇所メモ

新規インストール

まず、以前書いた以下の記事の感じで新しい環境に新規インストールします。記事の通りにデータベースのパッチもアップロードします。

データベースの移行

インストール直後のデータベースをバックアップしておきます。

移行前のデータベースはそのまま新しいデータベースにインポートしても文字化けなく動作しました。
SQLファイル内に「DEFAULT CHARSET=ujis」などが設定されている場合は、utf8に変更して流す必要があるかもしれません。(今回は必要ありませんでした)

zen_ezpages_content関連のエラー

データベースが古く、DB上に、zen_ezpages_contentというテーブルがなかったので、新規インストールの際にとったDBのバックアップから、zen_ezpages_contentに関するとこを一式いれました。以下のようなコードだったと思います。

CREATE TABLE IF NOT EXISTS `zen_ezpages_content` (
  `pc_id` int(11) NOT NULL auto_increment,
  `pages_id` int(11) NOT NULL default '0',
  `languages_id` int(11) NOT NULL default '1',
  `pages_title` varchar(64) NOT NULL default '',
  `pages_html_text` text,
  PRIMARY KEY  (`pc_id`),
  KEY `idx_ezpages_content` (`pages_id`,`languages_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

main_page=checkout_shippingのページが真っ白

テストで精算しようとしたら、精算のページが真っ白で何も出力されていない状態だったので、PHPのエラーを表示させるようにして、mydomain.com/index.phpから順に「echo “ほにゃらら”;」を設置して、どこでエラーが出てるのか調べました。

<?php
// エラー出力する場合
ini_set( 'display_errors', 1 );
error_reporting(E_ALL ^ E_NOTICE);
?>

調べていくと、yamato.phpを読み込む箇所で、yamato.phpがありませんよ。的なエラーでした(^.^;

ビッグマウスさんのZen Cartをダウンロードして、解凍すると、「追加モジュール」と「zencart本体」ってフォルダ分けになっていて、インストールは、「zencart本体」だけをアップして行なっていて、「追加モジュール」は、必要ならアップすればいいと思い、放置してました\(^o^)/

その「追加モジュール」の中にyamato.phpなど配送系のモジュールがカスタマイズされているファイルが存在してましたので、それをアップしたらエラーもなくなりました。

メールが送信されない

エラーもなくなったので、アカウントの登録や商品の購入など、一通りの流れをテストしました。
問題なく、注文も完了し、管理画面にも反映され、これで正常に動くーーーー\(^o^)/

と思っていたら、ユーザー登録のメールも、注文完了のメールも、届かない。。。

購入者にも管理者にも届かない(;O;)

管理画面の「追加設定・ツール」>「メールの送信」からメールを送っても届かない。。。

管理画面の「一般設定」>「メールの設定」を見ても、データベースが正常に反映されていたので、問題はなさそうでした。

新規インストール後は正常に動いていて、データベースを移しただけなので、古いデータベースの内容がダメだったのかなーーーと思い、調べてみました。

ビッグマウスさんのZencart(本家の新しいZencartも?)は、管理画面の「一般設定」>「メールの設定」ページの一番上の「メール送信 – 接続方法」の選択肢が多い。PHPやらQMAILやらが選択出来るようになっていました。そして、PHPが選択されていました。

なので、データベースの「zen_configurationテーブル」の以下の箇所を書き換えて、phpMyAdminから上書きしました。

修正前

'zen_cfg_select_option(array(''sendmail'', ''sendmail-f'', ''smtp'', ''smtpauth''),'),

修正後

'zen_cfg_select_option(array(''PHP'', ''sendmail'', ''sendmail-f'', ''smtp'', ''smtpauth'', ''Qmail''),'),

これで、管理画面上から、接続方法をPHPに変更すると、メールが送れるようになりました\(^o^)/

管理画面内の「追加設定・ツール > 配送料金自由設定」でエラー

「追加設定・ツール > 配送料金自由設定」を開くと、以下のようなエラーが出ます。
これもデータベースが古くて、データベース上のテーブルが存在しないのが原因です。

1146 Table 'sddb0040065095.zen_special_shipping' doesn't exist
in:
[select count(*) as count from zen_special_shipping]
If you were entering information, press the BACK button in your browser and re-check the information you had entered to be sure you left no blank fields.

解決するには以下のSQLを実行します。

CREATE TABLE IF NOT EXISTS `zen_special_shipping` (
  `size` int(3) NOT NULL,
  `area_1` int(6) NOT NULL,
  `area_2` int(6) NOT NULL,
  `area_3` int(6) NOT NULL,
  `area_4` int(6) NOT NULL,
  `area_5` int(6) NOT NULL,
  `area_6` int(6) NOT NULL,
  `area_7` int(6) NOT NULL,
  `area_8` int(6) NOT NULL,
  `area_9` int(6) NOT NULL,
  `area_10` int(6) NOT NULL,
  `area_11` int(6) NOT NULL,
  `area_12` int(6) NOT NULL,
  KEY `size` (`size`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- テーブルのデータをダンプしています `zen_special_shipping`
--

INSERT INTO `zen_special_shipping` (`size`, `area_1`, `area_2`, `area_3`, `area_4`, `area_5`, `area_6`, `area_7`, `area_8`, `area_9`, `area_10`, `area_11`, `area_12`) VALUES
(2, 1160, 840, 740, 740, 740, 740, 740, 840, 950, 1050, 1160, 1260),
(5, 1370, 1050, 950, 950, 950, 950, 950, 1050, 1160, 1260, 1370, 1790),
(10, 1580, 1260, 1160, 1160, 1160, 1160, 1160, 1260, 1370, 1470, 1580, 2310),
(15, 1790, 1470, 1370, 1370, 1370, 1370, 1370, 1470, 1580, 1680, 1790, 2840),
(20, 2000, 1680, 1580, 1580, 1580, 1580, 1580, 1680, 1790, 1890, 2000, 3360),
(25, 2210, 1890, 1790, 1790, 1790, 1790, 1790, 1890, 2000, 2100, 2210, 3890);

coupon_zone_restriction

クーポンのモジュールをインストールして、「クーポン券の管理」を表示すると以下のエラーがでました。

Unknown column ‘coupon_zone_restriction’ in ‘field list’
投稿日:
カテゴリー: zencart

コメントする

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