2010-06-11 12 views
19

Ich habe nach einer einfachen Möglichkeit gesucht, den Servernamen der Maschine zu erhalten, auf der Symfony in Symfony läuft (so dass meine App sich anpasst, wenn sie auf einem Host mit einem anderen Servernamen verwendet wird), aber ich konnte keine finden. Ich habe eine Variable in app.yml erstellt und ich hole sie, aber ich frage mich immer noch, ob es keinen einfacheren Weg dafür gibt. Wie machst du das? Ich verwende Symfony 1.2 und 1.4 in verschiedenen Projekten.Gibt es eine einfache Möglichkeit, den Servernamen in Symfony zu erhalten?

+2

Kannst du gethostname() nicht verwenden? http://php.net/manual/en/function.gethostname.php – mamoo

+0

Sorry, ich möchte nicht den Hostnamen, sondern den Servernamen (ich habe meinen Beitrag bearbeitet) – greg0ire

Antwort

39

ich glaube, ich etwas gefunden:

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

Dies scheint zu funktionieren ... es funktioniert es nur dort ist natürlich eine Anfrage, also ist es nicht universell.

+1

Ein Kollege hat mir gerade gesagt, dass wir uns nicht darauf verlassen sollten Dies, weil es viele Risiken gibt. Er hält die Einstellung in YML-Datei für die beste Lösung ... – greg0ire

+1

Könnten Sie bitte näher auf die Risiken eingehen? :-) – Flukey

+2

Es gibt mindestens zwei Situationen, in denen man sich nicht auf ein solches System verlassen möchte: - wenn man keinen Apache benutzt (beim Versenden von Mails über einen Cronjob zum Beispiel) - wenn man mehrere Server hat aber man will um den Kauf Ihrer Website mit nur einem von ihnen zu fördern. – greg0ire

2

nicht sehr schön, aber ich benutze $_SERVER["SERVER_NAME"] in meine Front-Controller-Datei, und verwenden, die die Umgebung bestimmen ich Aktivierung:

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

ich Interesse hätte, den richtigen Ansatz, um zu sehen: -)