【问题标题】:Retrieve Domain Name instead of IP检索域名而不是 IP
【发布时间】:2010-05-21 16:38:05
【问题描述】:

全部,

我正在使用以下命令来检索我的服务器的域名。

$_SERVER['HTTP_HOST']

这似乎返回 IP 地址而不是域名,如 www.example.com。我查看了 PHPInfo,它还列出了 HTTP_HOST 的 IP 地址而不是域名。我需要更改哪些内容才能显示域名而不是 IP?

谢谢

【问题讨论】:

    标签: php model-view-controller zend-framework apache2


    【解决方案1】:

    请改用$_SERVER['SERVER_NAME']

    或者,您可以查看可用的每个服务器变量,但将此脚本放在此服务器上的一个 PHP 页面中。

    <?PHP
    foreach($_SERVER as $key_name => $key_value) {
      print $key_name . " = " . $key_value . "<br>";
    }
    ?>
    

    【讨论】:

    • 这也列出了IP地址而不是域名
    • @Vincent:如果$_SERVER['SERVER_NAME'] 列出了一个 IP 地址,则 Apache 配置错误,因为它应该包含 Apache 的 ServerName 指令的值:httpd.apache.org/docs/2.2/mod/core.html#servername
    • ...或者只是var_dump($_SERVER)
    【解决方案2】:

    $_SERVER['HTTP_HOST'](如果客户端发出 HTTP/1.0 请求,则可能未定义)包含客户端请求的主机名。

    如果客户端请求http://127.0.0.1/,它将包含127.0.0.1;对于http://localhost/,它将包含localhost;对于http://127.0.0.1:81/,它将包含127.0.0.1:81

    【讨论】:

    • 是否可以在 /etc/hosts 文件中使用主机名定义 IP 地址,并且可能这个 $_SERVER["SERVER_NAME"] 或 $_SERVER["HTTP_HOST"] 会选择它?
    【解决方案3】:

    gethostbyaddr() 可以检索 IP 地址的主机名,但前提是已正确设置 DNS 记录

    【讨论】:

      【解决方案4】:

      有用的链接: http://php.net/manual/en/reserved.variables.server.php 使用 $_SERVER["SERVER_NAME"]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-31
        • 2018-02-25
        • 1970-01-01
        • 2017-01-03
        • 1970-01-01
        • 2014-08-13
        • 1970-01-01
        • 2016-11-11
        相关资源
        最近更新 更多