From: Jan Schneider Date: Tue, 21 Dec 2010 19:06:43 +0000 (+0100) Subject: Fix detecting PATH_INFO if using URL rewriting. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=f7a884daee2825652e3a9ff092558385adb37d37;p=horde.git Fix detecting PATH_INFO if using URL rewriting. --- diff --git a/framework/Util/lib/Horde/Util.php b/framework/Util/lib/Horde/Util.php index 38c6b985b..1094ea8c8 100644 --- a/framework/Util/lib/Horde/Util.php +++ b/framework/Util/lib/Horde/Util.php @@ -720,16 +720,19 @@ class Horde_Util return $_SERVER['PATH_INFO']; } elseif (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['SCRIPT_NAME'])) { - if (basename($_SERVER['SCRIPT_NAME']) == 'index.php') { - $search = array(dirname($_SERVER['SCRIPT_NAME']) . '/', - 'index.php'); - } else { - $search = array($_SERVER['SCRIPT_NAME']); + $search = Horde_String::common($_SERVER['SCRIPT_NAME'], $_SERVER['REQUEST_URI']); + if (substr($search, -1) == '/') { + $search = substr($search, 0, -1); } + $search = array($search); if (!empty($_SERVER['QUERY_STRING'])) { $search[] = '?' . $_SERVER['QUERY_STRING']; } - return str_replace($search, '', $_SERVER['REQUEST_URI']); + $path = str_replace($search, '', $_SERVER['REQUEST_URI']); + if ($path == '/') { + $path = ''; + } + return $path; } return ''; diff --git a/framework/Util/test/Horde/Util/UtilTest.php b/framework/Util/test/Horde/Util/UtilTest.php index 84881e1b3..675b950c4 100644 --- a/framework/Util/test/Horde/Util/UtilTest.php +++ b/framework/Util/test/Horde/Util/UtilTest.php @@ -1,12 +1,16 @@ * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @category Horde * @package Util * @subpackage UnitTests */ - class Horde_Util_UtilTest extends PHPUnit_Framework_TestCase { public function testAddParameter() @@ -112,6 +116,8 @@ class Horde_Util_UtilTest extends PHPUnit_Framework_TestCase $_SERVER['REQUEST_URI'] = '/horde/path.php/foo/bar?baz'; $_SERVER['QUERY_STRING'] = 'baz'; $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); + $_SERVER['REQUEST_URI'] = '/horde/foo/bar?baz'; + $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); $_SERVER['REQUEST_URI'] = '/horde/'; $_SERVER['SCRIPT_NAME'] = '/horde/index.php';