EC-CUBEの3系が浸透してきてからは2系が、
各種レンタルサーバーのクイックインストールから
案内が消えていますが…
まだまだ弊社ではEC-CUBEの2系が現役で、
インストールしたり保守したりしています。

そこで最近の新しいサーバに2系をインストールしようとしたところ、
画面が真っ白に…ということがありました。
弊社ではXserverを利用しておりますので、その前提で…。

これは原因は三つあって(場合によっては二つかも)
・Xserverでは標準でPHPのバージョンが7を採用してる
・接続するMySqlのバージョンが不釣り合い
・EC-CUBEに入っている.htaccessが邪魔をしている
というのが上手くいかない原因です。



・Xserverでは標準でPHPのバージョンが7を採用してる

これは結構簡単なことですが、ヒントが少ないのでハマりポイントのひとつです。
EC-CUBEの2系はPHP5.6までしか対応できていないので、
PHP7だと完全に動きません。
https://www.ec-cube.net/news/detail.php?news_id=290
↑のように、PHP7に対応したバージョンもリリースされているようですが、
アルファーバージョン(テスト段階)ですので、
実際にクライアントワークではあまり使えないと判断しています。
なので、サーバのPHPのバージョンを7から5.6まで下げざるを得ません。
レンタルサーバだったらコントロールパネルからすぐに設定が見つかると思います。



・接続するMySqlのバージョンが不釣り合い
難しいことはわかりませんが、データーベースへ接続する際に、
バージョンによってプログラムが少し違うようです。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=16981&forum=2
↑の投稿のように、本体プログラムにすこし手を加えてあげないといけません。

// /data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
// または
// /data/class_extends/db_extends/dbfactory/SC_DB_DBFactory_MYSQL_Ex.php

/**
 * 各 DB に応じた SC_Query での初期化を行う
 *
 * @param  SC_Query $objQuery SC_Query インスタンス
 * @return void
 */
public function initObjQuery(SC_Query &$objQuery)
{
    // [追記] MySqlのバージョンによって処理を分岐
    $val = $objQuery->getOne('select version()');
    if (strcmp($val,'5.7.5')) {
      $objQuery->exec('SET SESSION default_storage_engine = InnoDB');
    } else {
      $objQuery->exec('SET SESSION storage_enging = InnoDB');
    }
    
    $objQuery->exec("SET SESSION sql_mode = 'ANSI'");
}



・EC-CUBEに入っている.htaccessが邪魔をしている
サーバによると思いますが、EC-CUBEのファイルの中に標準で入っている
html/.htaccessが動作を邪魔している可能性があります。
そういうときは思い切ってそのファイルを削除すると上手くいきます。
そもそも念のために...という感じで入っているのでほとんどの場合問題が無いはずです。
またhtmlフォルダ直下以外の.htaccessは削除されない方がよいです。



間が空くと忘れてしまうので、これで忘れないはず…。