【问题标题】:Is there an easy way to get the ServerName in Symfony?有没有一种简单的方法可以在 Symfony 中获取 ServerName?
【发布时间】:2011-03-02 13:31:11
【问题描述】:

我一直在寻找一种简单的方法来获取在 Symfony 中运行 Symfony 的机器的 ServerName(以便我的应用程序在具有不同 ServerName 的主机上使用时进行调整),但我找不到。我在 app.yml 中创建了一个变量并获取它,但我仍然想知道是否没有更简单的方法可以做到这一点。 你是怎么做到的?我在不同的项目中使用 Symfony 1.2 和 1.4。

【问题讨论】:

标签: symfony hostname


【解决方案1】:

我想我找到了一些东西:

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

这似乎行得通...当然只有在有请求的情况下才会起作用,因此它不是通用的。因此,这将无法使用 CLI。

【讨论】:

  • 刚才有个同事告诉我,我们不应该依赖这个,因为有很多风险。他认为YML文件中的设置是最好的解决方案……
  • 能否详细说明风险? :-)
  • 至少有两种情况您不想依赖这样的系统: - 当您不使用 apache 时(例如,当通过 cronjob 发送邮件时) - 当您有多个服务器但您想仅使用其中一个来宣传您的网站购买。
【解决方案2】:

不是很好,但我在前端控制器文件中使用了$_SERVER["SERVER_NAME"],并使用它来确定我正在激活的环境:

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

我很想看看正确的方法:-)

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 2017-07-05
    • 2011-04-20
    • 2011-01-15
    • 2011-05-31
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多