Blog

【ECCUBE】更新情報の取得に失敗しました

2011/04/20

ECCUBE2.4

ECCUBE2.4「更新情報の取得に失敗しました。」が表示される場合の修正方法

/data/class/pages/admin/LC_Page_Admin_Home.php
の248行以降を参照し、以下の通り編集してください。

編集・アップロード後に、管理画面にアクセスし、画面右側のカラムに更新情報が表示されていればOKです。

/**
* リリース情報を取得する.
*
* @return unknown
*/
function lfGetInfo() {
$query = '';
// TODO サイト情報の送信可否設定を行う
if (true) {
$query = '?site_url=' . SITE_URL . '&eccube_version=' . ECCUBE_VERSION;
}

$url = UPDATE_HTTP . $query;
$jsonStr = @file_get_contents($url);

// ここから
if($jsonStr == false) {
$jsonStr = $this->do_get($url);
}
// ここまで追加

$objJson = new Services_JSON;
$arrTmpData = is_string($jsonStr) ? $objJson->decode($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 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;
}

// ここまで追加

以上です。

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ