PHP获取域名

发布于 2024-10-25 20:50:44 字数 161 浏览 5 评论 0 原文

我想获取脚本运行位置的域名。用 PHP 如何做到这一点? 我看到 $_SERVER['HTTP_HOST'] 以及 $_SERVER['SERVER_NAME'] 包含此信息。 该变量是否始终有效?我应该使用其中一个而不是另一个吗?

谢谢。

I want to get the domain name for where the script is running. How can that be done with PHP?
I see that $_SERVER['HTTP_HOST'] as well as $_SERVER['SERVER_NAME'] contain this information.
Will that variable always work and should I use one over the other?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半衾梦 2024-11-01 20:50:44

类似的问题之前在 stackoverflow 上也被问过。

请参阅此处: PHP $_SERVER['HTTP_HOST' ] 与 $_SERVER['SERVER_NAME'],我是否正确理解了手册页?

另请参阅这篇文章: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< /em>


Similar question has been asked in stackoverflow before.

See here: PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'], am I understanding the man pages correctly?

Also see this article: http://shiflett.org/blog/2006/mar/server-name-versus-http-host

Recommended using HTTP_HOST, and
falling back on SERVER_NAME only if
HTTP_HOST was not set. He said that
SERVER_NAME could be unreliable on the
server for a variety of reasons,
including:

  • no DNS support
  • misconfigured
  • behind load balancing software

Source:
http://discussion.dreamhost.com/thread-4388.html

悲欢浪云 2024-11-01 20:50:44

要回答您的问题,只要满足以下条件,这些就应该有效:

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

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

我个人的偏好是将域名设置为环境变量在 apache2 虚拟主机中:

# Virtual host
setEnv DOMAIN_NAME example.com

并且 用 PHP 读取它

// PHP
echo getenv(DOMAIN_NAME);

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

To answer your question, these should work as long as:

  • Your HTTP server passes these values along to PHP (I don't know any that don't)
  • You're not accessing the script via command line (CLI)

But, if I remember correctly, these values can be faked to an extent, so it's best not to rely on them.

My personal preference is to set the domain name as an environment variable in the apache2 virtual host:

# Virtual host
setEnv DOMAIN_NAME example.com

And read it in PHP:

// PHP
echo getenv(DOMAIN_NAME);

This, however, isn't applicable in all circumstances.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文