BUG Detect, warn, and fix invalid SS_BASE_URL

Fixes #7362
This commit is contained in:
Damian Mooyman 2017-09-20 10:07:32 +12:00
parent 9a7adc46f8
commit 09b3a24f30
No known key found for this signature in database
GPG Key ID: 78B823A10DE27D1A
2 changed files with 21 additions and 0 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

@ -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 () {