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にデータがあるのですが、名前を変えるにはどうしたらいいでしょうか?

関連記事

ツル tour de SANUKI(讃岐うどん満喫ポタリング)

自転車仲間のOさんと一緒に、讃岐うどんを食べまくるという楽しい(いや、苦しい?)ポタリングに行ってきました。題して、「ツル tour de SANUKI」(つるつーる・ど・さぬき)♪ 以前からとても楽 …

F1 ドイツGP 初日フリー走行

いつもはそれほど注目しない金曜のフリー走行ですが、今回はスーパーアグリの新車「SA06」と山本左近のデビュー戦ということで、注目しないわけにはいきません。 というわけで、まずはFP1の結果。 今回がデ …

REAL SPIRITS vol.44 長谷川穂積 復帰戦

昨夜、神戸中央体育館で行われた長谷川穂積の復帰戦を観てきました。 今回の相手は、メキシコのオラシオ・ガルシア。穂積より10才も若く、29戦無敗(21KO)の強敵ということで、正直言って、確実に負け試合 …

no image

イーグルパット

今日、久しぶりに友人達とゴルフに行ってきました。 初めての東条湖カントリー倶楽部というコースで、なかなか面白いコースでしたが、とにかく今日は暑かったです・・・(^^; スコアはいつも通りでしたが、ロン …

TaylorMade r5(DRとFW)が届きました

テーラーメイド r5シリーズのドライバーとフェアウェイウッド(5W)が届きました。 ・・・といっても、どちらもレディースモデル、妻用のクラブです(^^; まだ届いていないのですが、新しいアイアンセット …