【问题标题】:Why gethostbyname(gethostname()); in PHP is giving an IP different from my machine's ip为什么 gethostbyname(gethostname());在 PHP 中给出的 IP 与我机器的 ip 不同
【发布时间】:2019-12-18 09:13:26
【问题描述】:

我有以下 php 脚本试图获取当前服务器 ip 在这种情况下是我机器的当前 ip 地址,但 gethostbyname(gethostname()) 返回不同的地址,即 http://192.168.56.1/ 但我从 ipconfig 获取的当前地址是 http://192.168.1.111/ .

$server_ip = gethostbyname(gethostname());
$upload_url = 'http://'.$server_ip.':81/';
echo $upload_url;

如果我尝试使用该函数使用浏览器返回的 ip 获取资源,它可以工作,但是当尝试从移动客户端获取相同的资源时出现问题(它不起作用)但是如果我更改了ip 到我的机器在网络上使用的那个它可以获取资源。 因此,当应用程序将图像发布到服务器时,有一个 php 脚本和一个移动客户端我想保存移动客户端可以引用的 url,以使用例如 Glide lib 加载图像 因此尝试使用上述 php 函数获取主机名 ip,想了解为什么它返回的 ip 与主机在网络上分配给的 ip 不同。 任何帮助将不胜感激。

【问题讨论】:

  • 为什么/如何运行 php 的机器的 ip 未知(它肯定不是可变的)?你实际上想要做什么,提到了一个移动客户端,所以听起来你正在尝试测试一些东西。
  • 是的,它的 php 脚本接收从移动应用上传的图像,然后将图像保存到服务器上的文件夹中,然后将 url 插入数据库。所以这个方法 $server_ip = gethostbyname(gethostname ());返回类似 192.168.56.1:81/byro/asa/api/profilepics/… 的东西,但 192.168.56.1 不是我的机器在网络上的 ip,如果它变得更清晰,实际将是 192.168.1.111:81/byro/asa/api/profilepics/… 不知道
  • 所以 PHP 脚本正在您描述为“我的机器”的机器上运行,对吗?你实际上并没有明确地说明这一点。请确认您的意思。注:一台设备可能有多个 IP 地址(例如,如果它同时具有以太网和无线连接)。
  • 仅存储 /byro/... 可能会解决您的问题(即根本不存储主机名) - 请编辑问题以明确与什么对话等。(它应该没有必要阅读任何 cmets 以便读者理解问题/问题)。
  • 哦,是的,绝对“我的机器”是指使用 XAMPP 运行脚本的位置。感谢您提供有关多个地址可能性的建议

标签: php


【解决方案1】:

gethostbyname(gethostname()) 可以返回与您的“机器 IP”不同的 IP。我在这里是什么意思? 示例:如果您使用 VPN 隧道来引导您机器的流量。您的机器将有两个不同的 IP。默认情况下,gethostbyname(gethostname()) 将返回您通过 VPN 看到的 IP。

【讨论】:

    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 2021-08-03
    • 2012-07-04
    • 2021-11-14
    相关资源
    最近更新 更多