2010-06-11 18 views
19

Ho cercato un modo semplice per ottenere il NomeServer della macchina in cui Symfony è in esecuzione in Symfony (in modo che la mia app si adatti quando viene usata su un host con un diverso ServerName), ma non sono riuscita a trovarne una. Ho creato una variabile in app.yml e la prelevo, ma mi chiedo ancora se non ci sia un modo più semplice per farlo. Come stai? Sto usando Symfony 1.2 e 1.4 su diversi progetti.C'è un modo semplice per ottenere il ServerName in Symfony?

+2

Non puoi usare gethostname()? http://php.net/manual/en/function.gethostname.php – mamoo

+0

Spiacente, non voglio il nome host in effetti, ma il ServerName (ho modificato il mio post) – greg0ire

risposta

39

credo di aver trovato qualcosa:

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

Questo sembra funzionare ... funzionerà solo lì è una richiesta ovviamente, quindi non è universale.

+1

Un collega mi ha appena detto che non dovremmo fare affidamento su questo, perché ci sono molti rischi. Pensa che l'impostazione nel file YML sia la soluzione migliore ... – greg0ire

+1

potresti approfondire i rischi per favore? :-) – Flukey

+2

Ci sono due situazioni in cui non si vuole fare affidamento su un sistema del genere: - quando non si usa apache (quando si inviano mail tramite un cronjob per esempio) - quando si hanno diversi server ma si desidera per promuovere il tuo sito acquistare utilizzando solo uno di loro. – greg0ire

2
Non

molto bello, ma io uso $_SERVER["SERVER_NAME"] nel mio file front controller, e l'uso che per determinare l'ambiente che sto attivando:

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

Sarei curioso di vedere l'approccio corretto : -)

Problemi correlati