いまさらながら、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; }
コメントを残す