app\Common.php
function detectBaseURL() : string
{
// cache url
static $finalURL = null;
if ($finalURL !== null) {
return $finalURL;
}
$URLs = config(App::class)->baseURL;
// multi url support
if (is_array($URLs))
{
$host = [$_SERVER['SERVER_NAME'], $_SERVER['SERVER_ADDR']];
foreach ($URLs as $url)
{
$schemaLength = strpos($url, '//') + 2;
$hostLength = strpos($url, '/', $schemaLength);
$Host = substr($url, $schemaLength, $hostLength - $schemaLength);
if (in_array($Host, $host))
{
$finalURL = $url;
break;
}
}
// use first as backup
if ($finalURL === null)
{
$finalURL = $URLs[0];
}
} elseif (! is_string($URLs))
{
// TODO : handle invalid baseurl
$finalURL = (string) $URLs;
} else {
$finalURL = $URLs;
}
return $finalURL;
}