2010-06-11 23 views
19

Szukałem łatwego sposobu na uzyskanie nazwy ServerName komputera, na którym Symfony działa w Symfony (tak, że moja aplikacja dostosowuje się, gdy jest używana na hoście o innej nazwie ServerName), ale nie mogłem go znaleźć. Stworzyłem zmienną w app.yml i ją pobrałem, ale wciąż zastanawiam się, czy nie ma prostszego sposobu na zrobienie tego. Jak się masz? Używam Symfony 1.2 i 1.4 w różnych projektach.Czy istnieje łatwy sposób na uzyskanie nazwy ServerName w Symfony?

+2

Nie możesz użyć gethostname()? http://php.net/manual/en/function.gethostname.php – mamoo

+0

Niestety, nie chcę nazwy hosta, ale nazwa serwera (redagowałem mój wpis). – greg0ire

Odpowiedz

39

Chyba znalazłem coś:

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

to wydaje się działać ... to będzie działać tylko tam to oczywiście prośba, więc nie jest uniwersalna.

+1

Kolega właśnie powiedział mi, że nie powinniśmy polegać na to, ponieważ istnieje wiele zagrożeń. Uważa, że ​​ustawienie w pliku YML jest najlepszym rozwiązaniem ... – greg0ire

+1

Czy mógłbyś rozwinąć ryzyko? :-) – Flukey

+2

Istnieją dwie sytuacje, w których nie chcesz polegać na takim systemie: - gdy nie używasz Apache (podczas wysyłania wiadomości na przykład przez cronjob) - gdy masz kilka serwerów, ale chcesz promować swoją stronę kupując, używając tylko jednego z nich. – greg0ire

2

nie bardzo miły, ale używam $_SERVER["SERVER_NAME"] w moim przednim pliku sterownika, i użyć jej do określenia środowiska Ja aktywujący:

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

byłbym zainteresowany, aby zobaczyć podejście prawidłowe: -)