使用PHP exec()获取更新信息时出现问题

使用PHP exec()获取更新信息时出现问题,php,Php,我有一个简单的代码,它使用exec()设置带有一些系统信息(如当前IP)的变量。我执行代码并显示信息。我更改计算机的IP地址并重新运行代码。我使用unset()在执行代码之前清除变量,但是,它仍然显示旧信息。如何使用exec()获取当前信息?提前感谢,并为这件事感到抱歉 <button type="button" class="btn btn-info btn-lg" onclick="showip()">Get IP</button> <script&g

我有一个简单的代码,它使用exec()设置带有一些系统信息(如当前IP)的变量。我执行代码并显示信息。我更改计算机的IP地址并重新运行代码。我使用unset()在执行代码之前清除变量,但是,它仍然显示旧信息。如何使用exec()获取当前信息?提前感谢,并为这件事感到抱歉

  <button type="button" class="btn btn-info btn-lg" onclick="showip()">Get IP</button>

  <script>
  function showip(){
     <?php
        unset($return);
        unset($ip);
        exec('wget https://ipinfo.io/ip -qO -', $return);
        $ip = $return[0];
     ?>
     curip = <?php echo(json_encode($ip, JSON_HEX_TAG)); ?>;
     alert("The current IP is "+curip);
   }
  </script>
获取IP
函数showip(){
库里普=;
警报(“当前IP为”+curip);
}

PHP在服务器上运行,这就是为什么您总是获得相同的IP地址

如果需要客户端的IP地址,可以使用

$_SERVER["REMOTE_ADDR"]

用户查看当前页面的IP地址

另一个解决方案是请求
https://ipinfo.io/ip

function showip() {
    fetch("https://ipinfo.io/ip")
    .then(function(response) {
        return response.text()
    })
    .then(function(ip) {
        alert("The current IP is " + ip)
    })
}

服务器可以有多个IP地址,至少包括公共IP和本地(VPN)IP。 我想获得公共知识产权的问题已经得到了回答。如果要获取服务器的本地IP(VPN内)。您可以像这样尝试使用“ip地址”:

function ips(){
  $ips = [];
  exec('ip addr', $lines);
  foreach($lines as $line){
    $fields = explode(" ",trim($line));
    if($fields[0] == 'inet'){
      $ip = explode("/",$fields[1])[0];
      $ifname = $fields[count($fields)-1];
      $ips[$ifname] = $ip;
    }
  }
  return $ips;
}

这将返回每个接口的所有本地IP(v4)。如果您想使用IPv6,只需将“inet”更改为“inet6”。

PHP在服务器上运行……您希望获得哪个IP地址。作为在VPN内运行的服务器,您可能需要获取公共IP或VPN内的IP等。感谢您的回复。这就是我要找的服务器。有一点背景知识,我正在尝试创建一个触摸屏界面来更改raspberry pi上的VPN。我有一个控制台窗口,在用户更改VPN时显示当前状态和其他信息。但是,当我更改VPN时,exec()仍然显示旧IP,即使我可以从CLI中看到它已更改。可能
wget
会从服务器返回缓存响应。您是否尝试添加了
--无缓存
,以防止其缓存?谢谢您的帮助。AJAX请求解决了这个问题。仍然奇怪的是,wget会这样缓存它(即使没有缓存)