使用PHP exec()获取更新信息时出现问题
我有一个简单的代码,它使用exec()设置带有一些系统信息(如当前IP)的变量。我执行代码并显示信息。我更改计算机的IP地址并重新运行代码。我使用unset()在执行代码之前清除变量,但是,它仍然显示旧信息。如何使用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
<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会这样缓存它(即使没有缓存)