您好,
我想获取脚本运行位置的域名。如何用PHP完成?
我看到$_SERVER['HTTP_HOST']
以及$_SERVER['SERVER_NAME']
包含此信息。
该变量是否始终有效,我应该使用另一个吗?
谢谢。
答案 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支持
- 配置错误
- 负载平衡软件
答案 1 :(得分:7)
要回答您的问题,这些问题应该有效:
但是,如果我没记错的话,这些值可以在一定程度上伪造,所以最好不要依赖它们。
我个人的偏好是apache2虚拟主机中的set the domain name as an environment variable:
# Virtual host
setEnv DOMAIN_NAME example.com
// PHP
echo getenv(DOMAIN_NAME);
然而,这并不适用于所有情况。