PHP获取域名

时间:2011-03-23 11:53:46

标签: php domain-name

  

可能重复:
  HTTP_HOST vs. SERVER_NAME

您好,

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

谢谢。

2 个答案:

答案 0 :(得分:81)

之前在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

答案 1 :(得分:7)

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

  • 您的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);

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