[EC-CUBE 2.13.x]サーバー要件

いまさらながら、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;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*