最近、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の中身を確認しました)
あとは、その他の基本情報や商品情報等を管理画面から設定していきます。
初歩的なミスかもしれませんが、宜しくお願い致します。
インスールシステムを起動した際に
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′”);』を足した部分なのですがどうすればいいでしょうか?
すいません、解決しました。
『$this->conn->query(”SET NAMES ‘utf8′”);』の前に全角スペースが入っていました。
ご質問ですが、既に一店舗ありPostgreSQLにデータがあるのですが、名前を変えるにはどうしたらいいでしょうか?