diff --git a/CHANGELOG.md b/CHANGELOG.md index c416d0fd0..59451425d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ 1. [](#new) * Added support for custom `FormFlash` save locations * Added a new `Utils::arrayLower()` method for lowercasing arrays + * Support new GRAV_BASEDIR environment variable [#2541](https://github.com/getgrav/grav/pull/2541) + * Allow users to override plugin handler priorities [#2165](https://github.com/getgrav/grav/pull/2165) 1. [](#improved) * Use new `Utils::getSupportedPageTypes()` to enforce `html,htm` at the front of the list [#2531](https://github.com/getgrav/grav/issues/2531) * Updated vendor libraries diff --git a/system/router.php b/system/router.php index 9d4498144..43571b354 100644 --- a/system/router.php +++ b/system/router.php @@ -17,25 +17,22 @@ if (is_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $_SERVER['SCRIPT_N return false; } -$gravBasedir = getenv('GRAV_BASEDIR'); -if ($gravBasedir === false) { - $gravBasedir = ''; -} else { - $gravBasedir = DIRECTORY_SEPARATOR . trim($gravBasedir, DIRECTORY_SEPARATOR); - // tell system/defines.php not to use the default GRAV_ROOT - define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, '/', getcwd()). $gravBasedir); +$grav_index = 'index.php'; +/* Check the GRAV_BASEDIR environment variable and use if set */ +$grav_basedir = getenv('GRAV_BASEDIR') ?: ''; + +if (isset($grav_basedir)) { + $grav_index = ltrim($grav_basedir, '/') . DIRECTORY_SEPARATOR . $grav_index; + $grav_basedir = DIRECTORY_SEPARATOR . trim($grav_basedir, DIRECTORY_SEPARATOR); + define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, '/', getcwd()) . $grav_basedir); } $_SERVER = array_merge($_SERVER, $_ENV); -$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . $gravBasedir .DIRECTORY_SEPARATOR . 'index.php'; -$_SERVER['SCRIPT_NAME'] = $gravBasedir . DIRECTORY_SEPARATOR . 'index.php'; -$_SERVER['PHP_SELF'] = $gravBasedir . DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . $grav_basedir .DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['SCRIPT_NAME'] = $grav_basedir . DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['PHP_SELF'] = $grav_basedir . DIRECTORY_SEPARATOR . 'index.php'; error_log(sprintf('%s:%d [%d]: %s', $_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_PORT'], http_response_code(), $_SERVER['REQUEST_URI']), 4); -if ($gravBasedir === '') { - require 'index.php'; -} else { - require ltrim($gravBasedir, '/') . DIRECTORY_SEPARATOR . 'index.php'; -} +require $grav_index;