2012年02月14日 zencart

環境

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’

この投稿へのコメント

コメントはまだありません。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

ピックアップ記事

Dreamweaver で開いたファイルが文字化けする場合の対処法

2012年02月06日 web関連zencart
症状 今回は、ZenCartのデータベースを編集したくて、sqlファイル(EUC-JP)をDreamweaverで開いたら、文字化けしました。 Dreamweaverの「新規ドキュメント」の設定が関係しているようなので、新規ドキュメントを開く際のエンコードの設定を変更します。 解決策 環境設定 > カテゴリ内の「新規ドキュメント」> 「エンコーディングが指定されていない既存ファイ…
「Dreamweaver で開いたファイルが文字化けする場合の対処法」をはてなブックマークに追加

zencartをUTF-8で運用する

2012年02月13日 zencart
ZencartをUTF-8で運用する方法 ZencartをUTF-8で運用するには 「Zen Cart 日本語公式サイト」で配布されているZen Cart(EUC-JP)をインストールして、独自でUTF-8に変換する方法 と、あらかじめUTF-8化されている「ビッグマウス版 Zen Cart 1.3.9h」を利用する方法 の2つの選択肢があると思います。今回は、後者のインストールについて詳しく書…
「zencartをUTF-8で運用する」をはてなブックマークに追加

simplexml_load_fileでRSSを取得・表示させる

2012年02月11日 phpzencart
simplexml_load_fileとは simplexml_load_fileは、PHP5から利用可能になった関数で、XMLをパースしてオブジェクトに代入します。 今回は、オープンソースのECサイト構築システム「ZenCart」に外部ブログ(WordPress)のRSSを表示させてみました。 設置コード [php] <?php $rss = "http://apr20…
「simplexml_load_fileでRSSを取得・表示させる」をはてなブックマークに追加

ZenCartのパンくずリストをトップページのみ非表示にする

2012年02月11日 phpzencart
変更する箇所 includes/classes/breadcrumb.php の60行目付近 [php] } else { $trail_string .= $this->_trail[$i]['title']; } [/php] 上記のコードを以下に変更します。 [php] } else { if ($this->…
「ZenCartのパンくずリストをトップページのみ非表示にする」をはてなブックマークに追加

Zencartの文字化け対策

2012年02月06日 zencart
症状 ZenCartのサーバ移転の際に、DBは文字化けなく、移行出来たのですが、サイトや管理画面上の出力に、文字化けが出たので、その解決策です。 解決方法 以下の通り修正します。 修正する箇所 /includes/classes/db/mysql/query_factory.phpの35行目あたり [php]/includes/classes/db/mysql/query_factory…
「Zencartの文字化け対策」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy