【问题标题】:PHP get domain name [duplicate]PHP获取域名[重复]
【发布时间】:2011-07-21 06:15:44
【问题描述】:

我想获取脚本运行的域名。如何用 PHP 做到这一点? 我看到$_SERVER['HTTP_HOST'] 和$_SERVER['SERVER_NAME'] 包含此信息。 该变量会一直有效吗?我应该使用其中一个吗?

谢谢。

【问题讨论】:

  • 这确实回答了我关于使用 SERVER_NAME 而不是另一个问题的部分问题,但这是在 PHP 中执行此操作的正确方法吗? (是另一部分)谢谢。

标签: php domain-name


【解决方案1】:

以前在 stackoverflow 中也提出过类似的问题。

请看这里:PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'], am I understanding the man pages correctly?

另见这篇文章:http://shiflett.org/blog/2006/mar/server-name-versus-http-host

推荐使用 HTTP_HOST,并且 仅在以下情况下才使用 SERVER_NAME 未设置 HTTP_HOST。他说过 SERVER_NAME 在 服务器由于各种原因, 包括:

  • 不支持 DNS
  • 配置错误
  • 负载平衡软件背后

来源: http://discussion.dreamhost.com/thread-4388.html

【讨论】:

  • HTTP_HOST 对我来说似乎是正确的。 SERVER_NAME 工作正常,直到我们开始使用 Docker,然后只给了我们“localhost”。请注意,HTTP_HOST 也会为您提供子域。
【解决方案2】:

要回答您的问题,这些应该只要:

  • 您的 HTTP 服务器将这些值传递给 PHP(我不知道有哪些没有)
  • 您没有通过命令行 (CLI) 访问脚本

但是,如果我没记错的话,这些值在一定程度上是可以伪造的,所以最好不要依赖它们。

我个人的偏好是在apache2虚拟主机中set the domain name as an environment variable:

# Virtual host
setEnv DOMAIN_NAME example.com

还有read it in PHP:

// PHP
echo getenv(DOMAIN_NAME);

然而,这并不适用于所有情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多