X2サーバーに EC-CUBE をインストールする方法|エックスツー
EC-CUBE は国産のECサイトで、管理画面が使いやすいのが特長です。
X2サーバーでは、始めたのかたでも EC-CUBE をすぐにインストールできます。
ここでは、X2サーバーの便利な機能“ワンクリックインストール”を使ったEC-CUBEの導入と表示チェック方法について分かりやすく解説します。
エックスツーでEC-CUBEをインストールすると、管理画面に「更新情報の取得に失敗しました。」というエラーメッセージが表示されました(2015年1月現在)。この解決策に関してはエラーメッセージの対処法をご確認ください。
1.ワンクリックインストールを使用する
まず最初に、下図の画面にアクセスして" Ec Cube "の「インストール設定」をクリックしましょう。(※ 画面のアクセス方法が分からない方は、ワンクリックインストール画面へのアクセス方法をお読みください)
2.EC-CUBE をインストールする
すると次の通り EC-CUBE のインストール設定画面にアクセスします。
ここでは例として、URLをシンプルなドメイン名にするため「ショップインストール先」を空白にしておきます。
データベースは、「自動でデータベースを生成する」を選択します。管理IDと管理パスワードは、EC-CUBE管理画面のログイン情報となります。
設定が終わったら「インストールする(確認)」をクリックしましょう。
すると確認画面が表示されるので、念のため問題ないか確認して「インストールする(確定)」をクリックしましょう。
ここでのケースでは、「index.html が削除されます」というメッセージが表示されますが、初めてインストールする場合は特に気にする必要はありません。ただし、サブドメインを利用する場合はドメイン名の間違えがないかしっかり確認しましょう。
EC-CUBE のインストールが完了するまで時間がかかるので、しばらく待ちましょう。完了したら次の画面が表示されます。インストールは以上となります。
ただし、サイトが問題なく表示されるかの確認を行いましょう。「ログインフォーム」のURLをクリックするとログイン画面にアクセスします。
3.サイトを確認する
ログイン画面にアクセスしたら、先ほど設定した EC-CUBE のログイン情報(管理者IDと管理パスワード)を入力し、「LOGIN」をクリックします。
管理画面にアクセスできると次のような画面が表示されます。次はサイト表示をチェックしましょう。「SITE CHECK」をクリックするとサイトが表示されます。(上部のエラーメッセージについては後述しています)
次のようにサンプルサイトが表示されます。
以上で EC-CUBE のワンクリックインストールは完了です。
管理画面にエラーメッセージが表示されたときの対処法
EC-CUBE のワンクリックインストールすると、管理画面の上部に「更新情報の取得に失敗しました。」というエラーメッセージが表示されました。このエラーが表示されないようにするには、PHPファイルの修正が必要になります。
まずFTPソフトでサーバーにアクセスして、下記のファイルをダウンロードします。
そしてこのファイルを修正します。実際には下記のマークした部分のソースを追記しました。ここでは、ステンレスコード様のサイト記事のソースを転載させていただきました。
「// ここから」〜「// ここまで追加」が2箇所あります。その箇所をコピーして貼り付けます。
/** * リリース情報を取得する. * * @return array 取得した情報配列 */ public function lfGetInfo() { // 更新情報の取得ON/OFF確認 if (!ECCUBE_INFO) return array(); // パラメーター「UPDATE_HTTP」が空文字の場合、処理しない。 // XXX これと別に on/off を持たせるべきか。 if (strlen(UPDATE_HTTP) == 0) return array(); $query = ''; // サイト情報の送信可否設定 // XXX インストール時に問い合わせて送信可否設定を行うように設定すべきか。 // XXX (URLは強制送信すべきではないと思うが)バージョンは強制送信すべきか。 if (UPDATE_SEND_SITE_INFO === true) { $query = '?site_url=' . HTTP_URL . '&eccube_version=' . ECCUBE_VERSION; } $url = UPDATE_HTTP . $query; // タイムアウト時間設定 $context = array('http' => array('timeout' => HTTP_REQUEST_TIMEOUT)); $jsonStr = @file_get_contents($url, false, stream_context_create($context)); // ここから if( empty($jsonStr) ) { $jsonStr = $this->do_get($url); } // ここまで追加 $arrTmpData = is_string($jsonStr) ? SC_Utils_Ex::jsonDecode($jsonStr) : null; if (empty($arrTmpData)) { SC_Utils_Ex::sfErrorHeader('>> 更新情報の取得に失敗しました。'); return array(); } $arrInfo = array(); foreach ($arrTmpData as $objData) { $arrInfo[] = get_object_vars($objData); } return $arrInfo; } // ここから function do_get($url) { $res = $this->get_contents($url); $res_array = explode("\r\n", $res); switch ($res_array[0]) { case 'HTTP/1.0 200 OK': case 'HTTP/1.1 200 OK': $ra = explode("\r\n\r\n", $res, 2); $res = $ra[1]; break; case 'HTTP/1.1 302 Found'://追記したところ case 'HTTP/1.1 302 MovedTemporarily': foreach ($res_array as $res_row) { if (strstr($res_row, 'Location: ')) { $crr_url = str_replace('Location: ', '', $res_row); break; } } $res = $this->get_contents($crr_url); $ra = explode("\r\n\r\n", $res, 2); $res = $ra[1]; break; default: $res = ''; } return $res; } function get_contents($url) { $url_array = parse_url($url); $host = $url_array['host']; $path = $url_array['path']; if (array_key_exists('port', $url_array)) { $port = $url_array['port']; } else { switch ($url_array['scheme']) { case 'http': $port = 80; break; } } $query = $url_array['query']; $res = false; if (isset($host) && isset($port)) { $fp = fsockopen($host, $port, $errno, $errstr, 30); if ($fp) { $req = "GET " . $path . "?" . $query . " HTTP/1.0\r\n" . "Host: " . $host . "\r\n" . "\r\n"; socket_set_timeout($fp, 10); if (fputs($fp, $req, strlen($req))) { $res = ''; while (!feof($fp)) { $res .= fgets($fp); } } fclose($fp); } } return $res; } // ここまで追加 }
修正したファイルをアップロードして、管理画面にアクセスしてみましょう。エラーメッセージが非表示になっていたらOKです。