只需find服务器的IP地址

以下代码查找主机服务器的实际本地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可以影响域名解析。