86

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

谢谢你。

4

2 回答 2

90

之前在stackoverflow中已经提出了类似的问题。

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

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

建议使用 HTTP_HOST,并且仅在未设置 HTTP_HOST 时才使用 SERVER_NAME。他说 SERVER_NAME 在服务器上可能不可靠,原因有很多,包括:

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

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

于 2011-03-23T11:57:28.590 回答
7

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

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

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

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

# Virtual host
setEnv DOMAIN_NAME example.com

在 PHP 中阅读

// PHP
echo getenv(DOMAIN_NAME);

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

于 2011-03-23T12:00:46.263 回答