From 136f92429a107d4c35f9e7bfeb8fe329f7cb8817 Mon Sep 17 00:00:00 2001 From: Jan Schneider Date: Tue, 15 Jun 2010 02:04:25 +0200 Subject: [PATCH] Fix Horde_Util::getPathInfo() on lighttpd. --- framework/Util/lib/Horde/Util.php | 11 ++++--- framework/Util/test/Horde/Util/UtilTest.php | 49 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/framework/Util/lib/Horde/Util.php b/framework/Util/lib/Horde/Util.php index dfaee551d..9b7186dfd 100644 --- a/framework/Util/lib/Horde/Util.php +++ b/framework/Util/lib/Horde/Util.php @@ -669,13 +669,16 @@ class Horde_Util return $_SERVER['PATH_INFO']; } elseif (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['SCRIPT_NAME'])) { - $search = array((basename($_SERVER['SCRIPT_NAME']) == 'index.php') ? dirname($_SERVER['SCRIPT_NAME']) . '/' : $_SERVER['SCRIPT_NAME']); - $replace = array(''); + if (basename($_SERVER['SCRIPT_NAME']) == 'index.php') { + $search = array(dirname($_SERVER['SCRIPT_NAME']) . '/', + 'index.php'); + } else { + $search = array($_SERVER['SCRIPT_NAME']); + } if (!empty($_SERVER['QUERY_STRING'])) { $search[] = '?' . $_SERVER['QUERY_STRING']; - $replace[] = ''; } - return str_replace($search, $replace, $_SERVER['REQUEST_URI']); + return str_replace($search, '', $_SERVER['REQUEST_URI']); } return ''; diff --git a/framework/Util/test/Horde/Util/UtilTest.php b/framework/Util/test/Horde/Util/UtilTest.php index 9e1caf5d6..84881e1b3 100644 --- a/framework/Util/test/Horde/Util/UtilTest.php +++ b/framework/Util/test/Horde/Util/UtilTest.php @@ -84,4 +84,53 @@ class Horde_Util_UtilTest extends PHPUnit_Framework_TestCase 'test?bar=2&baz=3', (string)Horde_Util::removeParameter($url, 'foo')); } + + public function testGetPathInfo() + { + $this->assertEquals('', Horde_Util::getPathInfo()); + + $_SERVER['SERVER_SOFTWARE'] = ''; + $_SERVER['PATH_INFO'] = ''; + $this->assertEquals('', Horde_Util::getPathInfo()); + + $_SERVER['PATH_INFO'] = '/foo/bar'; + $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); + + $_SERVER['SERVER_SOFTWARE'] = 'lighttpd/1.4.26'; + $_SERVER['PATH_INFO'] = ''; + $_SERVER['REQUEST_URI'] = '/horde/path.php'; + $_SERVER['SCRIPT_NAME'] = '/horde/path.php'; + $this->assertEquals('', Horde_Util::getPathInfo()); + $_SERVER['REQUEST_URI'] = '/horde/path.php?baz'; + $_SERVER['QUERY_STRING'] = 'baz'; + $this->assertEquals('', Horde_Util::getPathInfo()); + + $_SERVER['REQUEST_URI'] = '/horde/path.php/foo/bar'; + $_SERVER['SCRIPT_NAME'] = '/horde/path.php'; + $_SERVER['QUERY_STRING'] = ''; + $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); + $_SERVER['REQUEST_URI'] = '/horde/path.php/foo/bar?baz'; + $_SERVER['QUERY_STRING'] = 'baz'; + $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); + + $_SERVER['REQUEST_URI'] = '/horde/'; + $_SERVER['SCRIPT_NAME'] = '/horde/index.php'; + $this->assertEquals('', Horde_Util::getPathInfo()); + + $_SERVER['REQUEST_URI'] = '/horde/index.php'; + $_SERVER['SCRIPT_NAME'] = '/horde/index.php'; + $_SERVER['QUERY_STRING'] = ''; + $this->assertEquals('', Horde_Util::getPathInfo()); + $_SERVER['REQUEST_URI'] = '/horde/index.php?baz'; + $_SERVER['QUERY_STRING'] = 'baz'; + $this->assertEquals('', Horde_Util::getPathInfo()); + + $_SERVER['REQUEST_URI'] = '/horde/index.php/foo/bar'; + $_SERVER['SCRIPT_NAME'] = '/horde/index.php'; + $_SERVER['QUERY_STRING'] = ''; + $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); + $_SERVER['REQUEST_URI'] = '/horde/index.php/foo/bar?baz'; + $_SERVER['QUERY_STRING'] = 'baz'; + $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); + } } -- 2.11.0