有没有一种简单的方法来获取Symfony中的ServerName?

问题描述:

我一直在寻找一种简单的方法来获取Symfony在Symfony中运行的计算机的ServerName(以便我的应用程序在具有不同ServerName的主机上使用时适用),但找不到一个。我在app.yml中创建了一个变量,然后我获取它,但我仍然怀疑是否没有更简单的方法来完成此操作。 你最近怎么样?我在不同的项目上使用Symfony 1.2和1.4。有没有一种简单的方法来获取Symfony中的ServerName?

+2

你不能使用gethostname()吗? http://php.net/manual/en/function.gethostname.php – mamoo 2010-06-11 08:29:08

+0

对不起,我其实不想要主机名,但是ServerName(我编辑了我的文章) – greg0ire 2010-06-11 09:06:20

我想我找到的东西:

$this->getRequest()->getHost() 

这似乎是工作...它只会工作,它有是当然的要求,所以它不是通用的。

+1

一位同事告诉我,我们不应该依赖这个,因为有很多风险。他认为在YML文件中的设置是最好的解决方案... – greg0ire 2010-06-11 09:28:36

+1

你能详细说明风险吗? :-) – Flukey 2010-06-11 13:05:42

+2

有两种情况你不想依赖这样的系统: - 当你不使用apache(例如通过cronjob发送邮件时) - 当你有几台服务器但你想要促进您的网站购买只使用其中之一。 – greg0ire 2010-06-11 13:32:56

不是很漂亮,但我在前端控制器文件中使用$_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(); 

我很想看到正确方法: - )