PHP检查主机名是否解析为本地计算机

PHP检查主机名是否解析为本地计算机,php,server,ping,hostname,resolve,Php,Server,Ping,Hostname,Resolve,我想使用PHP检查指定的主机名是否解析为运行PHP脚本的服务器。通过主机名,我的意思是在我的特定上下文中与域名相同 比如说,我有一台服务器,它的公共IP地址是123.123.123.123或类似的东西。我的DNS服务器正在将两个域解析到此IP地址:domain1.com和domain2.com。我正在通过domain1.com访问服务器上的PHP页面,但我希望脚本告诉我domain2.com是否正在解析到服务器,并返回一个适当的结果,如回显“是”或“否” 我不知道该怎么做。我在考虑两种可能性:

我想使用PHP检查指定的主机名是否解析为运行PHP脚本的服务器。通过主机名,我的意思是在我的特定上下文中与域名相同

比如说,我有一台服务器,它的公共IP地址是123.123.123.123或类似的东西。我的DNS服务器正在将两个域解析到此IP地址:domain1.com和domain2.com。我正在通过domain1.com访问服务器上的PHP页面,但我希望脚本告诉我domain2.com是否正在解析到服务器,并返回一个适当的结果,如回显“是”或“否”

我不知道该怎么做。我在考虑两种可能性:

  • 尝试类似于主机名“ping”的操作,看看是否有响应,尽管我认为这不起作用,因为它是本地到本地的,可能需要在服务器的hosts文件中解析主机名,这就违背了这一点(我想知道主机名是否为Internet上的其他客户端解析,而不是本地计算机),或者

  • 检查主机名的DNS服务器,查看它是否解析为服务器的公共IP,在这种情况下,我必须以某种方式在PHP中获取公共IP

  • 我将如何处理这个问题

    PHP脚本示例如下:

    function host_resolves($host){
        // get server public IP
        // check if hostname is a valid domain name
        // try to connect to the hostname's DNS server
        // query the DNS server and compare IP (maybe in A record?) to public IP
        // split off a sub-domain and check for a CNAME if needed
    }
    
    if(host_resolves('domain2.com')){
        echo 'yep!';
    }
    else{
        echo 'nup :(';
    }
    

    没有可靠的方法来进行此检查。例如,具有多个域的服务器可能对每个域具有不同的IP地址(具有多个地址的服务器),或者服务器可能只有一个私有IP地址,并且位于具有公共地址的防火墙或负载平衡器后面。