diff --git a/boot.php b/boot.php index 24e6912797..222011f6b7 100644 --- a/boot.php +++ b/boot.php @@ -854,3 +854,22 @@ function validate_include(&$file) // Simply return flag return $valid; } + +/** + * PHP 5 compatible dirname() with count parameter + * + * @see http://php.net/manual/en/function.dirname.php#113193 + * + * @deprecated with PHP 7 + * @param string $path + * @param int $levels + * @return string + */ +function rdirname($path, $levels = 1) +{ + if ($levels > 1) { + return dirname(rdirname($path, --$levels)); + } else { + return dirname($path); + } +} \ No newline at end of file diff --git a/src/App.php b/src/App.php index 45d743b0d6..261c3e74cb 100644 --- a/src/App.php +++ b/src/App.php @@ -523,7 +523,7 @@ class App if (!empty($relative_script_path)) { // Module if (!empty($_SERVER['QUERY_STRING'])) { - $path = trim(dirname($relative_script_path, substr_count(trim($_SERVER['QUERY_STRING'], '/'), '/') + 1), '/'); + $path = trim(rdirname($relative_script_path, substr_count(trim($_SERVER['QUERY_STRING'], '/'), '/') + 1), '/'); } else { // Root page $path = trim($relative_script_path, '/');