【问题标题】:Use PHP to display the local IP address of the server [duplicate]使用PHP显示服务器的本地IP地址[重复]
【发布时间】:2019-10-17 06:49:23
【问题描述】:

我需要显示可以在局域网中识别的服务器地址。
我尝试使用

echo $_SERVER["SERVER_ADDR"];

但这只是返回 127.0.0.1 而不是 192.168.xx.xx。
我如何获得第二个没有访问 WWW 的?

【问题讨论】:

  • 好吧,一个服务器本身是 127.0.0.1 ...
  • @treyBake 我知道它是,但我需要一种方法来打印它的 LAN 地址。我不是问为什么 SERVER_ADDR 不起作用,只是说它不起作用
  • 另外,@treyBake 参考您发布的链接,这不是解决方案,因为我的设置无权访问 www
  • 您不需要 www 即可访问网站 - 只需将 url 换成您的?
  • 我认为您通常不会得到我要问的内容。我想要我的服务器的 LAN 地址。不是外部IP。您发布了一个询问外部地址并使用外部站点作为解决方案的问题。为什么会是重复的?

标签: php server ip apache2 lan


【解决方案1】:

希望这会有所帮助,

function getLanIP(){
    exec("ipconfig /all", $output);
        foreach($output as $line){
            if (preg_match("/(.*)IPv4 Address(.*)/", $line)){
                $ip = $line;
                $ip = str_replace("IPv4 Address. . . . . . . . . . . :","",$ip);
                $ip = str_replace("(Preferred)","",$ip);
            }
        }
    return $ip;
}

或类似,

$ip = getLanIP();
echo $ip;

<?php
function getLocalIp(){ 
     return gethostbyname(trim(`hostname`)); 
}
echo getLocalIp(); 
?>

【讨论】:

  • 代码只回答... ;)
  • 您的回答为我指出了一种更简单的方法,只需使用“主机名 -I”(必须包含大写 I),它就会输出我需要的内容。
【解决方案2】:

解决方案比我想象的要简单。
只需使用:

exec ("hostname -I", $ip);
echo $ip[0];

【讨论】:

    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 2013-04-24
    • 2011-07-02
    • 2012-05-15
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多