我有三个关于PHP $_SERVER['SERVER_ADDR']
变量的快速问题。变量是否唯一(在整个互联网上只有一个)?变量永远不会改变吗?如果这两个问题都是否定的,那么是否有一种方法可以通过PHP在internet上唯一地标识服务器?
你的问题有点不清楚,但在评论中你问:
所以我可以使用gethostbyname($_SERVER['SERVER_NAME'])来可靠地获取服务器的IP地址吗?
答案通常是不。虽然服务器的主机名不会改变,但IP可以在web应用程序的生命周期内改变。IP变更的原因可能是服务器从一个主机重新定位到另一个主机。
或者甚至是基于轮循的DNS负载均衡,其中多个IP地址分配给相同的主机名。特别是当使用后者时,gethostbyname($_SERVER['SERVER_NAME'])
将连续地为每个DNS请求提供不同的IP地址。
另一个原因可能是负载均衡器后面的web服务器。然后将负载均衡器的IP地址分配给主机名,在这种情况下,web服务器本身(PHP运行的地方)有内部地址。