2010-06-11 17 views
19

He estado buscando una forma fácil de obtener el ServerName de la máquina donde Symfony se ejecuta en Symfony (para que mi aplicación se adapte cuando se usa en un host con un ServerName diferente), pero no pude encontrar uno. Creé una variable en app.yml y la busqué, pero aún me pregunto si no hay una manera más fácil de hacerlo. ¿Cómo estás? Estoy usando Symfony 1.2 y 1.4 en diferentes proyectos.¿Hay alguna manera fácil de obtener ServerName en Symfony?

+2

¿No puedes usar gethostname()? http://php.net/manual/en/function.gethostname.php – mamoo

+0

Lo siento, no quiero el nombre de host de hecho, pero el ServerName (edité mi publicación) – greg0ire

Respuesta

39

Creo que he encontrado algo:

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

Esto parece funcionar ... que sólo funcionará allí es una solicitud por supuesto, así que no es universal.

+1

Un colega me acaba de decir que no debemos confiar en esto, porque hay muchos riesgos Él piensa que la configuración en el archivo YML es la mejor solución ... – greg0ire

+1

¿Podría explicar los riesgos, por favor? :-) – Flukey

+2

Existen al menos dos situaciones en las que no desea confiar en un sistema de este tipo: - cuando no utiliza apache (cuando envía correos a través de un cronjob por ejemplo) - cuando tiene varios servidores pero desea para promocionar su sitio compre usando solo uno de ellos. – greg0ire

2
No

muy agradable, pero yo uso $_SERVER["SERVER_NAME"] en mi archivo controlador frontal, y usarlo para determinar el entorno Estoy activando:

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

Estaría interesado en ver el enfoque adecuado : -)

Cuestiones relacionadas