Merge pull request #7388 from open-sausages/pulls/4.0/fix-base-absolute-url

BUG Detect, warn, and fix invalid SS_BASE_URL
This commit is contained in:
Chris Joe 2017-09-20 14:32:18 +12:00 committed by GitHub
commit 0e10412b86
3 changed files with 22 additions and 1 deletions

View File

@ -418,6 +418,13 @@ variable set-up process. This generally encouraged bad practice and should be av
logic early in the bootstrap, this is best placed in the `_config.php` files.
Note also that `$_FILE_TO_URL_MAPPING` has been removed and replaced with `SS_BASE_URL` env var.
This url must be an absolute url with an optional protocol. The following are valid, for example:
```
SS_BASE_URL="http://localhost/"
SS_BASE_URL="https://localhost/"
SS_BASE_URL="//localhost/"
```
The global values `$database` and `$databaseConfig` have been deprecated, as has `ConfigureFromEnv.php`
which is no longer necessary.

View File

@ -136,7 +136,7 @@ class ContentNegotiator
}
$negotiator = new ContentNegotiator();
$negotiator->$chosenFormat( $response );
$negotiator->$chosenFormat($response);
}
/**

View File

@ -72,6 +72,20 @@ if (!getenv('SS_IGNORE_DOT_ENV')) {
});
}
// Validate SS_BASE_URL is absolute
if (getenv('SS_BASE_URL') && !preg_match('#^(\w+:)?//.*#', getenv('SS_BASE_URL'))) {
call_user_func(function () {
$base = getenv('SS_BASE_URL');
user_error(
"SS_BASE_URL should be an absolute url with protocol "
. "(http://$base) or without protocol (//$base)",
E_USER_WARNING
);
// Treat as protocol-less absolute url
$base = '//' . $base;
putenv("SS_BASE_URL=$base");
});
}
if (!defined('BASE_URL')) {
define('BASE_URL', call_user_func(function () {