只需找到服务器的IP地址即可

时间:2012-01-03 13:16:17

标签: php linux apache network-programming

以下代码用于查找主机服务器的实际本地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

检查并搜索phpinfo()的输出不会返回机器实际IP地址的线索。

说真的,有没有人知道获得运行脚本的机器的IP地址的防弹(更简单,更好)的方法?为什么在没有回翻的情况下获得这样的基础数据如此困难?

我真的不想在配置文件中硬编码IP地址......

3 个答案:

答案 0 :(得分:3)

我担心一般情况下这是不可能的 - 用于连接服务器的真实IP可能会在到达服务器之前进行翻译......

答案 1 :(得分:3)

如果您需要所有接口列表,请尝试system();执行shell命令并将结果发送到Web服务器。例如:

system('ifconfig', $LIP);
system('ipconfig', $WIP);
echo "Linux:".$LIP."<br>Win:".$WIP."<br>;

答案 2 :(得分:0)

试试这个:

$ip = getHostByName( $_SERVER['HTTP_HOST'] );

它应解决主机用户访问网站的IP。

例如,如果您通过http://localhost/访问了自己的网站,那么它将为您提供127.0.0.1。但是对于http://www.mydomain.tld/,它应该返回www.mydomain.tld的IP。

请注意,/etc/hosts会影响名称解析,如果域名列在那里。