monotone blog

人生は楽しむためにある!素敵な人生は幸せな毎日から♪ 田舎で気ままに暮らすフリーランスSEの日常を綴るブログ。

IT・コンピュータ 備忘録 独り言

CPIにEC-CUBE 2系をインストール

投稿日:

最近、CPIというレンタルサーバーにEC-CUBEの2系をインストールしました。

EC-CUBE自体はこれまでにも使用したことがあったのですが、CPIはデータベースの文字コードがEUC固定(MySQLもPostgreSQLもどちらも)ということで、そのままでは使用することができませんでした。
(別の案件で、独自のDBシステムをCPIで動かす際にも色々と苦労しました(^^;)

1系のインストールについては、公式のページでインストール方法が紹介されているのですが、最新の2系はサポート外のようです。

というわけで、色々と苦労したので、今後のためにもインストールメモを・・・。

----------

まず、ダウンロードしたEC-CUBEのパッケージを解凍すると「html」と「data」の2つのフォルダが出来るので、「html」をサーバーの「html」にアップし、「data」はルートディレクトリ(htmlと同じ階層)にアップします。また、後ほどphp.iniを作成して格納するために「conf」フォルダを同じくルートに作成しておきます。

あと、インストール時の処理用に、「/html/install/temp/」のパーミッションを「777」に変更します。

/html/  ←EC-CUBEの「html」フォルダをそのままアップ
/html/install/temp/  ←パーミッションを「777」に変更
/data/  ←EC-CUBEの「data」フォルダをそのままアップ
/conf/  ←新規作成(php.ini 格納用)

次に、CPIはデフォルトではPHPが利用できず、.htaccessを設置する必要があります。また、EC-CUBEを動作させるために、独自のphp.iniを作成してPHPの設定を変更する必要があり、php.iniのパスも.htaccessに記載しておく必要があります。

AddHandler x-httpd-php524 .php
suPHP_ConfigPath /usr/home/(ユーザID)/conf/

上記を「.htaccess」として保存し、「html」「data」両ディレクトリにアップします。

1行目がPHPを利用するための記述です。バージョンによって異なりますので、CPIコントロールパネルの「PHPのご利用について」を確認します。
2行目がphp.iniのパスです。最初に作成した「conf」フォルダを指定します。

次にphp.iniを作成します。

自分で全て作るのは大変なので、デフォルトのphp.iniの必要箇所を修正します。

CPIコントロールパネルの「お客様情報 > プログラムのパスとサーバの情報」に「PHP iniの設定情報」があるので、「.htaccess」で指定したバージョンのphp.iniを開き、中身を全てコピーします。

テキストエディタにペーストし、以下の通り修正を加えます。

output_buffering = Off

output_buffering = 4096

;output_handler

output_handler = mb_output_handler (コメント外す)

magic_quotes_gpc = On

magic_quotes_gpc = Off

mbstring.http_input = auto

mbstring.http_input = UTF-8

mbstring.encoding_translation = On

mbstring.encoding_translation = Off

上記の修正を加えたモノを「php.ini」として保存し、サーバールートの「conf」フォルダにアップします。

あと、同梱の郵便番号データがUTF-8で、このままではDBに取り込めないので、「/data/class/pages/admin/basis/LC_Page_Admin_Basis_ZipInstall.php」を修正します。

while (!feof($fp)) {
  $arrCSV = fgetcsv($fp, ZIP_CSV_LINE_MAX);

  // すでに書き込まれたデータを飛ばす。
  if($cnt > $end_cnt) {
    $sqlval[‘code’] = $arrCSV[0];
    $sqlval[‘old_zipcode’] = $arrCSV[1];
    $sqlval[‘zipcode’] = $arrCSV[2];
    $sqlval[‘state_kana’] = $arrCSV[3];
    $sqlval[‘city_kana’] = $arrCSV[4];
    $sqlval[‘town_kana’] = $arrCSV[5];
    $sqlval[‘state’] = $arrCSV[6];
    $sqlval[‘city’] = $arrCSV[7];
    $sqlval[‘town’] = $arrCSV[8];
    $sqlval[‘flg1’] = $arrCSV[9];
    $sqlval[‘flg2’] = $arrCSV[10];
    $sqlval[‘flg3’] = $arrCSV[11];
    $sqlval[‘flg4’] = $arrCSV[12];
    $sqlval[‘flg5’] = $arrCSV[13];
    $sqlval[‘flg6’] = $arrCSV[14];
    $objQuery->insert(“mtb_zip”, $sqlval);
  }

の部分(105行目~)を、

$search = array(‘~’, ‘-‘);
$replace = array(‘~’, ‘-’);

while (!feof($fp)) {
  $arrCSV = fgetcsv($fp, ZIP_CSV_LINE_MAX);

  // すでに書き込まれたデータを飛ばす。
  if($cnt > $end_cnt) {
    $sqlval[‘code’] = $arrCSV[0];
    $sqlval[‘old_zipcode’] = $arrCSV[1];
    $sqlval[‘zipcode’] = $arrCSV[2];
    $sqlval[‘state_kana’] = mb_convert_kana($arrCSV[3], “KV”);
    $sqlval[‘city_kana’] = mb_convert_kana($arrCSV[4], “KV”);
    $sqlval[‘town_kana’] = mb_convert_kana($arrCSV[5], “KV”);
    $sqlval[‘state’] = str_replace($search, $replace, $arrCSV[6]);
    $sqlval[‘city’] = str_replace($search, $replace, $arrCSV[7]);
    $sqlval[‘town’] = str_replace($search, $replace, $arrCSV[8]);
    
    $sqlval[‘flg1’] = $arrCSV[9];
    $sqlval[‘flg2’] = $arrCSV[10];
    $sqlval[‘flg3’] = $arrCSV[11];
    $sqlval[‘flg4’] = $arrCSV[12];
    $sqlval[‘flg5’] = $arrCSV[13];
    $sqlval[‘flg6’] = $arrCSV[14];
    $objQuery->insert(“mtb_zip”, $sqlval);
  }

に修正します。

さらに、「/data/class/SC_DbConn.php」の65行目、

$this->conn = $objDbConn;

のすぐ下に、

if ($this->conn instanceof DB_pgsql) {
  $this->conn->query(“SET NAMES ‘utf8′”);
}

を追加します。

このまでの準備をして、ようやくEC-CUBEのインストールシステムを起動することができます。

http://hogehoge(ドメインorIP)/install/

ブラウザで上記にアクセスし、ウィザードに沿って初期設定を進めます。(DBはPostgreSQLを選択)

すると、「■データベースの初期化」の段階で、「×:初期データの作成に失敗しました。」というエラーが出ます。仕方がないので「データベースの初期化処理を行わない」にチェックを入れて、次へ進みます。

EC CUBE インストールが完了しました。
管理画面にログインできます。
先ほど登録したID、パスワードを用いてログインしてください。

という画面が表示されますが、実際には管理者の情報がDBに登録出来ていないため、ログインできません。

というわけで、直接SQLを投げて登録するしかないようです。

CPIコントロールパネルの「制作ツール > データベース」から「phpPgAdmin」を起動して、

insert into dtb_member(name, department, login_id, password, authority, del_flg, creator_id)values(‘kanrisha’, ‘admin’, ‘[管理者ID]‘, ‘[管理者パスワード]‘, ‘0’, ‘0’, ‘0’);

というSQLを実行します。(パスワードはハッシュで暗号化)

これで、管理画面にログインできるはずですので、

http://hogehoge(ドメインorIP)/admin/

からログインします。管理画面にログインできることを確認した後、インストール用のファイル「/html/install/index.php」をサーバーから削除します。

EC-CUBE管理画面の「基本情報管理 > 郵便番号DB登録」をクリックし、CSVデータをDBにinsertします。

件数が多いため、とても時間がかかりますが、そのまま待ちます。(私の環境では「応答を待っています」のまま画面が変わりませんでしたが、phpPgAdminでmtb_zipの中身を確認しました)

あとは、その他の基本情報や商品情報等を管理画面から設定していきます。







-IT・コンピュータ, 備忘録, 独り言

執筆者:


  1. 悠々自適 より:

    初歩的なミスかもしれませんが、宜しくお願い致します。
    インスールシステムを起動した際に
    Parse error: syntax error, unexpected T_VARIABLE in /usr/home/●●●/data/class/SC_DbConn.php on line 67
    と言うエラーが出てしまい、つまずいています。
    67行目と言うと『$this->conn->query(“SET NAMES ‘utf8′”);』を足した部分なのですがどうすればいいでしょうか?

  2. 悠々自適 より:

    すいません、解決しました。
    『$this->conn->query(”SET NAMES ‘utf8′”);』の前に全角スペースが入っていました。

    ご質問ですが、既に一店舗ありPostgreSQLにデータがあるのですが、名前を変えるにはどうしたらいいでしょうか?

関連記事

「一太郎2005」を購入

先日注文していた「一太郎2005」が届きました。 最初は「ATOK2005」のみのパッケージを購入しようと考えていたのですが、一太郎のバージョンアップ版とほとんど値段が変わらなかったので、結局一太郎を …

ひまわりの丘公園

先日、マイミクの方の日記に近くの公園のことが書かれていたのを読んで、そういえばひまわりが咲いている季節だなと思い、EOS 40Dを持って行ってきました。 一人で行くのも寂しいと思い、最近デジイチにハマ …

no image

F1総集編 2007

本日深夜、地上波のF1総集編が放送されます。(関西テレビエリア) 毎年CSで放送される総集編を録画して保存している(CMがないので)のですが、地上波の方はハイビジョンなので映像は圧倒的に綺麗です。 今 …

トリプルタイトルマッチ

先日も少し書いた、長谷川穂積選手のフェザー級初防衛戦(西岡・粟生も加えてのトリプル世界戦)のチケットが先行発売されたので、早速確保しました! 2011年4月8日(金)  東京・両国国技館 ・WBC世界 …

趣味の書道

以前から関心はあったのですが、最近友人のブログの影響で書道に関する興味が高まっています。 墨の香りを感じながら精神を集中させて紙に向かう、っていうのもなかなか良いですよね。 でいつもの通り、まずは道具 …