以下代码用于查找主机服务器的实际本地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地址......
答案 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
会影响名称解析,如果域名列在那里。