有没有一种简单的方法可以在 Symfony 中获取 ServerName?

Posted

技术标签:

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

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

【问题讨论】:

你不能使用 gethostname() 吗? php.net/manual/en/function.gethostname.php 对不起,我实际上不想要主机名,而是服务器名(我编辑了我的帖子) 【参考方案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();

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

【讨论】:

以上是关于有没有一种简单的方法可以在 Symfony 中获取 ServerName?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 Symfony 中所有实体的列名?

有没有一种正确的方法可以在 symfony 中使用 SwiftMailer 包将 NTLM 身份验证类型添加到 SwiftMailer 中?

有没有一种简单的方法可以在 django 中获取用户的组名

有没有一种干净的方法来使用 symfony 2.6 设置 websocket

如何在 natTable 中对配置标签进行排序? (有没有一种简单的方法可以从 nattable 中获取相对坐标?)

有没有一种简单的方法可以从 Angular 模板中的 firebase-storage 路径获取下载 url