さくらのレンタルサーバでEC-CUBEを動かす

レンタルサーバー|さくらインターネット に EC-CUBEを設置するには少々コツがいります。

ファイルパーミッション(アクセス権)は
ディレクトリ(フォルダ): 0705
*.php: 0705
*.tpl: 0705
その他のファイル: 0604

EC-CUBEのルートディレクトリにある.htaccess は削除します。
かわりにサーバーの管理画面からphp.iniが設定できるので、 magic_quotes_gpc = off にします。

エラーメッセージ、問題ないが多くの警告が表示されますので、これもOFFにします。

EC-CUBEデータベースに接続の基本コード

php5〜php7

Database に接続

$pdo = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASSWORD);

ヒットがユニークの場合

$sql = "SELECT * FROM `tb_hogehoge`";
$statement = $pdo->query($sql);
$item = $statement->fetch(PDO::FETCH_ASSOC);
var_dump($item);

Roop の場合

$sql = "SELECT * FROM `tb_hogehoge`";
foreach($pdo->query($sql) as $item) {
	var_dump($item);
}

↓php7 から使えなくなる。

バージョン2.4系

$db = mysql_connect(DB_SERVER.":".DB_PORT,DB_USER,DB_PASSWORD);
// mysql_query("SET NAMES utf8");
mysql_set_charset('utf8');
mysql_select_db(DB_NAME, $db);
$sql1 = "SELECT * FROM `dtb_category` WHERE `category_id` = '$_GET[category_id]'";
$rs1 = mysql_query($sql1,$db);
$item1 = mysql_fetch_assoc($rs1);

バージョン2.11系

// Config読込み
// バージョン2.4系
// include $_SERVER[DOCUMENT_ROOT]."/data/install.php";
// バージョン2.11系
// include $_SERVER[DOCUMENT_ROOT]."/config/config.php";
// install.php を include しなくてもいいみたい。

//------------------------------------------------------
// MySQLに接続開始
    $db = mysql_connect(DB_SERVER.":".DB_PORT,DB_USER,DB_PASSWORD);
    // mysql_query("SET NAMES utf8");
    mysql_set_charset('utf8');
    // DB指定(確認用)
    if(!mysql_select_db(DB_NAME, $db)){
        // echo "<div style=\"color:red;\">\nメインデータベースに接続できません。</div>\n";
    }elseif(mysql_select_db(DB_NAME, $db)){
        // echo "<div style=\"color:green;\">\nDB指定OK!(".DB_NAME.")</div>\n\n\n";
    }
//------------------------------------------------------

$sql1 = "SELECT * FROM `dtb_category` WHERE `category_id` = '$_GET[category_id]'";
$rs1 = mysql_query($sql1,$db);
$item1 = mysql_fetch_assoc($rs1);

会員登録のカスタマイズ

会員ランク[dtb_customer.status]の初期値を任意に操作する。

/data/class/pages/entry/LC_Page_Entry.php
L: 621

$arrRegist["status"] = "2";				// 本会員

この辺を変更する。

// 条件により会員ランクを分ける
if(条件1){
    $sqlval['status'] = '3';
}elseif(条件2){
   $sqlval['status'] = '4';
}

※ 「status = 1」は仮登録会員用として予約済み!

新規に作成したページのエラー

下記のようなエラーを吐いて何も表示されない。

Warning: Unknown: SAFE MODE Restriction in effect. The script whose gid is 1000 is not allowed to access /virtual/ドメイン名/public_html/xxxx/user_data/guide.php owned by uid 1000 in Unknown on line 0

Warning: Unknown: SAFE MODE Restriction in effect. The script whose uid is 1000 is not allowed to access /virtual/ドメイン名/public_html/xxxx/user_data/guide.php owned by uid 1000 in Unknown on line 0

Warning: Unknown: failed to open stream: Success in Unknown on line 0

Fatal error: Unknown: Failed opening required '/virtual/ドメイン名/public_html/xxxx/user_data/guide.php' (include_path='.:/usr/local/lib/php') in Unknown on line 0

user_dataのパーミッションは777
user_data内のphpファイルの権利者がapacheになっています。
これを、他のファイルと同じように変更すると回避できる。