[ticket/12004] Support empty routes to app.php/ in path_helper

The symfony routing component allows us to use the path "/" for routes.
Therefore, we should be able to use example.com/app.php/ for controllers.
However, this currently does not properly work. The method get_web_root_path
incorrectly returns phpbb_root_path. Therefore, paths to images or files are
broken.

PHPBB3-12004
This commit is contained in:
Marc Alexander 2013-11-06 13:35:20 +01:00
parent d5363bd095
commit 5dc3651290
2 changed files with 17 additions and 0 deletions

View file

@ -148,6 +148,16 @@ class path_helper
// Script name URI (e.g. phpBB/app.php)
$script_name = $this->symfony_request->getScriptName();
/*
* If the path info is empty but we're using app.php, then we
* might be using an empty route like app.php/ which is
* supported by symfony's routing
*/
if ($path_info === '/' && preg_match('/app\.' . $this->php_ext . '\/$/', $request_uri))
{
return $this->web_root_path = $this->phpbb_root_path . '../';
}
/*
* If the path info is empty (single /), then we're not using
* a route like app.php/foo/bar

View file

@ -116,6 +116,13 @@ class phpbb_path_helper_web_root_path_test extends phpbb_test_case
'/phpbb3-fork/phpBB/foo/template',
'/phpbb3-fork/phpBB/app.php',
),
array(
$this->phpbb_root_path . 'test.php',
$this->phpbb_root_path . '../test.php',
'/',
'/phpbb3-fork/phpBB/app.php/',
'/phpbb3-fork/phpBB/app.php',
),
);
}