以下代码查找主机服务器的实际本地IP地址(例如192.168.1.X
)在开发机器上运行良好
$ip = getHostByName( getHostName() );
将其传输到另一台服务器,它开始输出127.0.0.1
看来,getHostName()返回localhost
,然后由getHostByName()转换为127.0.0.1
。
看看这里的其他问题似乎$_SERVER['SERVER_ADDR']
可能解决这个难题,但这也是返回127.0.0.1
检查并search来自phpinfo()
的输出不会返回机器实际IP地址的线索。
严重的是,有没有人知道一个防弹(更简单,更好)的方式来获得运行脚本的机器的IP地址? 为什么很难得到这样的基本数据而不做倒退?
我真的不想在configuration文件中硬编码的IP地址…
恐怕一般情况下这是不可能的 – 用于连接服务器的真实IP可能会在到达服务器之前被转换。
如果你需要所有的接口列表,试试system();
执行shell的命令并将结果传递给web服务器。 例如:
system('ifconfig', $LIP); system('ipconfig', $WIP); echo "Linux:".$LIP."<br>Win:".$WIP."<br>;
尝试这个:
$ip = getHostByName( $_SERVER['HTTP_HOST'] );
它应该解析主机用户访问网站的IP。
例如,如果你有通过http://localhost/
访问你的网站,它会给你127.0.0.1。 但是对于http://www.mydomain.tld/
它应该返回www.mydomain.tld的IP。
请注意,如果域名在那里列出, /etc/hosts
可以影响域名解析。