Index: branches/version-2_5-dev/data/class/util/SC_Utils.php
===================================================================
--- branches/version-2_5-dev/data/class/util/SC_Utils.php	(revision 18743)
+++ branches/version-2_5-dev/data/class/util/SC_Utils.php	(revision 18767)
@@ -105,21 +105,55 @@
     function searchInstallerPath($path) {
         $installer = 'install/index.php';
+
+        if (SC_Utils::sfIsHTTPS()) {
+            $proto = "https://";
+        } else {
+            $proto = "http://";
+        }
+        $host = $proto . $_SERVER['SERVER_NAME'];
         if ($path == '/') {
-            return $path . $installer;
+            return $host . $path . $installer;
         }
         if (substr($path, -1, 1) != '/') {
             $path .= $path . '/';
         }
-        if (SC_Utils::sfIsHTTPS()) {
-            $proto = "https://";
-        } else {
-            $proto = "http://";
-        }
-        $installer_url = $proto . $_SERVER['SERVER_NAME'] . $path . $installer;
-        $resources = fopen($installer_url, 'r');
+        $installer_url = $host . $path . $installer;
+        $resources = fopen(SC_Utils::getRealURL($installer_url), 'r');
         if ($resources === false) {
             $installer_url = SC_Utils::searchInstallerPath($path . '../');
         }
         return $installer_url;
+    }
+
+    /**
+     * 相対パスで記述された URL から絶対パスの URL を取得する.
+     *
+     * この関数は, http(s):// から始まる URL を解析し, 相対パスで記述されていた
+     * 場合, 絶対パスに変換して返す
+     *
+     * 例)
+     * http://www.example.jp/aaa/../index.php
+     * ↓
+     * http://www.example.jp/index.php
+     *
+     * @param string $url http(s):// から始まる URL
+     * @return string $url を絶対パスに変換した URL
+     */
+    function getRealURL($url) {
+        $parse = parse_url($url);
+        $tmp = split('/', $parse['path']);
+        $results = array();
+        foreach ($tmp as $v) {
+            if ($v == '' || $v == '.') {
+                // queit.
+            } elseif ($v == '..') {
+                array_pop($results);
+            } else {
+                array_push($results, $v);
+            }
+        }
+
+        $path = join('/', $results);
+        return $parse['scheme'] . '://' . $parse['host'] . '/' . $path;
     }
 
Index: branches/version-2_5-dev/test/TestSuite.php
===================================================================
--- branches/version-2_5-dev/test/TestSuite.php	(revision 18763)
+++ branches/version-2_5-dev/test/TestSuite.php	(revision 18767)
@@ -27,4 +27,5 @@
 require_once(realpath(dirname(__FILE__)) . "/class/db/DB_AllTests.php");
 require_once(realpath(dirname(__FILE__)) . "/class/helper/Helper_AllTests.php");
+require_once(realpath(dirname(__FILE__)) . "/class/util/Util_AllTests.php");
 
 /**
@@ -41,4 +42,5 @@
         $suite->addTest(DB_AllTests::suite());
         $suite->addTest(Helper_AllTests::suite());
+        $suite->addTest(Util_AllTests::suite());
         return $suite;
     }
Index: branches/version-2_5-dev/test/class/util/SC_Utils_Test.php
===================================================================
--- branches/version-2_5-dev/test/class/util/SC_Utils_Test.php	(revision 18767)
+++ branches/version-2_5-dev/test/class/util/SC_Utils_Test.php	(revision 18767)
@@ -0,0 +1,81 @@
+<?php
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+// {{{ requires
+require_once(realpath(dirname(__FILE__)) . '/../../require.php');
+require_once(realpath(dirname(__FILE__)) . '/../../../data/class/pages/LC_Page.php');
+
+/**
+ * SC_Utils のテストケース.
+ *
+ * @package Page
+ * @author LOCKON CO.,LTD.
+ * @version $Id:LC_Page_Test.php 15116 2007-07-23 11:32:53Z nanasess $
+ */
+class SC_Utils_Test extends PHPUnit_Framework_TestCase {
+
+    // }}}
+    // {{{ functions
+
+    /**
+     * SC_Utils::getRealURL() のテストケース.
+     *
+     * 変換無し
+     */
+    function testGetRealURL_変換無し() {
+        $url = "http://www.example.jp/admin/index.php";
+
+        $expected = "http://www.example.jp/admin/index.php";
+        $actual = SC_Utils::getRealURL($url);
+
+        $this->assertEquals($expected, $actual);
+    }
+
+    function testGetRealURL_変換有() {
+        $url = "http://www.example.jp/admin/../index.php";
+
+        $expected = "http://www.example.jp/index.php";
+        $actual = SC_Utils::getRealURL($url);
+
+        $this->assertEquals($expected, $actual);
+    }
+
+    function testGetRealURL_空のディレクトリ() {
+        $url = "http://www.example.jp/admin/..///index.php";
+
+        $expected = "http://www.example.jp/index.php";
+        $actual = SC_Utils::getRealURL($url);
+
+        $this->assertEquals($expected, $actual);
+    }
+
+    function testGetRealURL_Dotのディレクトリ() {
+        $url = "http://www.example.jp/admin/././../index.php";
+
+        $expected = "http://www.example.jp/index.php";
+        $actual = SC_Utils::getRealURL($url);
+
+        $this->assertEquals($expected, $actual);
+    }
+}
+?>
Index: branches/version-2_5-dev/test/class/util/Util_AllTests.php
===================================================================
--- branches/version-2_5-dev/test/class/util/Util_AllTests.php	(revision 18767)
+++ branches/version-2_5-dev/test/class/util/Util_AllTests.php	(revision 18767)
@@ -0,0 +1,43 @@
+<?php
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+// {{{ requires
+// {{{ requires
+require_once(realpath(dirname(__FILE__)) . '/SC_Utils_Test.php');
+
+/**
+ * Util パッケージのテストケース.
+ *
+ * @package Util
+ * @author Kentaro Ohkouchi
+ * @version $Id:LC_Page_Test.php 15116 2007-07-23 11:32:53Z nanasess $
+ */
+class Util_AllTests extends PHPUnit_Framework_TestCase {
+
+    public static function suite() {
+        $suite = new PHPUnit_Framework_TestSuite('Util');
+        $suite->addTestSuite('SC_Utils_Test');
+        return $suite;
+    }
+}
+?>
