いまさらながら、EC-CUBE2.13.xを利用したい場合のサーバー要件のメモ。
そして、気をつけたいこと。
必要なPHPバージョン
PHP 5.2~5.6.x(PHP7以降には未対応で、EC-CUBE2.17で対応予定とのこと)
必須PHPライブラリ
- pgsql / mysql
- gd
- freetype2
- mbstring
- zlib
- ctype
- spl (PHP 5.3.0 未満の場合)
- session
推奨PHPライブラリ
- JSON(PHP5.2以降でオーナーズストアを使用する場合は必須)
- xml(プラグイン機能を使用する場合は必須)
- OpenSSL
- cURL
- hash
- mhash (PHP 5.3.0 未満の場合)
- mcrypt
- zip
必要なデータベース
PostgreSQL 8.1.4~ 9.x~
MySQL 5.0.x~
そもそもPHP5.xはサポート終了している?
基本的に、、、
PHP5.x最後のバージョン5.6も、PHP公式のセキュリティサポートが2018年12月31日に終了している。
ただ、OSによって、バックポートされているとかなんとか。
できれば、新しいEC-CUBE4.xを利用していきたいところ。
MySQL5.7.5以降を利用している場合は注意が必要
MySQL5.7.5より、「システム変数:storage_engine」が削除されているため、
インストール時などデータベースにアクセスするとき、エラーが発生します。
対応は、「システム変数:storage_engine」を「システム変数:default_storage_engine」に変更する必要があります。
具体的な修正箇所は下記。
// クラス:SC_DB_DBFactory_MYSQL
// 関数:initObjQuery
public function initObjQuery(SC_Query &$objQuery)
{
/* 修正 ここから */
// $objQuery->exec('SET SESSION storage_engine = InnoDB');
$objQuery->exec('SET SESSION default_storage_engine = InnoDB');
/* 修正 ここまで */
$objQuery->exec("SET SESSION sql_mode = 'ANSI'");
}
商品一覧表示で安い順がうまく表示されない?
商品一覧の価格順での表示のとき、del_flgが考慮されていない模様なので、
下記を修正する必要がある。
// クラス:SC_Product
// 関数:findProductIdsOrder
public function findProductIdsOrder(&$objQuery, $arrVal = array())
{
$table = 'dtb_products AS alldtl';
if (is_array($this->arrOrderData) and $objQuery->order == '') {
$o_col = $this->arrOrderData['col'];
$o_table = $this->arrOrderData['table'];
$o_order = $this->arrOrderData['order'];
$objQuery->setOrder("T2.$o_col $o_order");
/* 修正 ここから */
// $sub_sql = $objQuery->getSql($o_col, "$o_table AS T2", 'T2.product_id = alldtl.product_id');
$sub_sql = $objQuery->getSql($o_col, "$o_table AS T2", 'T2.product_id = alldtl.product_id AND T2.del_flg = 0');
/* 修正 ここまで */
$sub_sql = $objQuery->dbFactory->addLimitOffset($sub_sql, 1);
$objQuery->setOrder("($sub_sql) $o_order, product_id");
}
$arrReturn = $objQuery->getCol('alldtl.product_id', $table, '', $arrVal);
return $arrReturn;
}

コメントを残す