有没有一种简单的方法可以在 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 中使用 SwiftMailer 包将 NTLM 身份验证类型添加到 SwiftMailer 中?
有没有一种干净的方法来使用 symfony 2.6 设置 websocket