我一直在寻找一种简单的方式来获取Symfony运行的机器的ServerName(以便当应用在具有不同ServerName的主机上时进行适应),但我找不到这样的方法。我在app.yml中创建了一个变量并提取它,但我仍然想知道是否有更简单的方法。
你是如何做到的?我在不同的项目中使用Symfony 1.2和1.4。
我一直在寻找一种简单的方式来获取Symfony运行的机器的ServerName(以便当应用在具有不同ServerName的主机上时进行适应),但我找不到这样的方法。我在app.yml中创建了一个变量并提取它,但我仍然想知道是否有更简单的方法。
你是如何做到的?我在不同的项目中使用Symfony 1.2和1.4。
我觉得我找到了一些东西:
$this->getRequest()->getHost()
这似乎可行... 当然,它只在有请求时才能工作,因此它不是通用的。所以,在使用CLI时,它无法工作。
虽然不太好,但我在我的前端控制器文件中使用$_SERVER["SERVER_NAME"]
,并使用它来确定我正在激活的环境:
$env = "prod";
if (preg_match("/qahost\.tld$/", $_SERVER["SERVER_NAME"]))
{
$env = "qa";
}
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', $env, false);
sfContext::createInstance($configuration)->dispatch();
我很想看到正确的方法 :-)
public function login(Request $request): void
{
$redirectUri = sprintf(
'%s://%s%s',
$request->getScheme(),
$request->getHost(),
$this->generateUrl('save-token'),
);
}