27

I have been searching for an easy way to get the ServerName of the machine where Symfony runs in Symfony (so that my app adapts when it is used on a host with a different ServerName), but I couldn't find one. I created a variable in app.yml and I fetch it, but I still wonder if there is no easier way to do this. How are you doing this? I'm using Symfony 1.2 and 1.4 on different projects.

seferov
  • 4,111
  • 3
  • 37
  • 75
greg0ire
  • 22,714
  • 16
  • 72
  • 101

2 Answers2

60

I think I found something :

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

This seems to work... It will work only if there is a request of course, so it is not universal. So, this won't work using CLI.

Loenix
  • 1,057
  • 1
  • 10
  • 23
greg0ire
  • 22,714
  • 16
  • 72
  • 101
  • 2
    A colleague just told me that we should not rely on this, because there are many risks. He thinks the setting in YML file is the best solution... – greg0ire Jun 11 '10 at 09:28
  • 1
    could you elaborate on the risks please? :-) – Flukey Jun 11 '10 at 13:05
  • 7
    There are at leas two situations where you do not want to rely on such a system : - when you do not use apache (when sending mails via a cronjob for instance) - when you have several servers but you want to promote your site buy using only one of them. – greg0ire Jun 11 '10 at 13:32
2

Not very nice, but I use $_SERVER["SERVER_NAME"] in my front controller file, and use that to determine the environment I'm activating:

$env = "prod";
if (preg_match("/qahost\.tld$/", $_SERVER["SERVER_NAME"]))
{
  $env = "qa";
}
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', $env, false);
sfContext::createInstance($configuration)->dispatch();

I'd be interested to see the proper approach :-)

richsage
  • 26,912
  • 8
  • 58
  • 65