Apache - PHP SERVER_ADDR显示内部IP?

echo $ _SERVER ['SERVER_ADDR'] </ code>总是产生 192.168.1.142 < / code>,这是我家庭网络中我的服务器的IP地址。 我可以使用我的外部IP访问网站,因为我已经在我的路由器上设置了端口,但是 $ _ SERVER ['SERVER_ADDR'] </ code>只会返回内部IP,无论我尝试什么。 </ p>

如何让 $ _ SERVER ['SERVER_ADDR'] </ code>返回我的外部IP?</ p>
</ div>

展开原文

原文

echo $_SERVER['SERVER_ADDR'] always yields 192.168.1.142, which is the IP address of my server within my home network. I can access the website using my external IP since I've set up the port forward on my router, but $_SERVER['SERVER_ADDR'] will only return the internal IP, no matter what I try.

How can I make $_SERVER['SERVER_ADDR'] return my external IP?

php
douhongxie5436
douhongxie5436 这似乎不起作用。我将在明天的一些现场服务器上看看它是如何完成的,看看我能找到什么。谢谢您的帮助。
7 年多之前 回复
douyan6871
douyan6871 好吧,我重新分析并看到只有/etc/hosts文件有影响所以你必须将你的外部IP定义到这个文件中,这将适用于你的外部IP。
7 年多之前 回复
dongyue9864
dongyue9864 toolong
7 年多之前 回复
doubian0284
doubian0284 这可以通过虚拟主机设置来处理,您可能已经设置了IntranetIP地址而不是外部IP地址
7 年多之前 回复

2个回答



您可以使用file_get_contents函数。 您只需找到一个可以返回您的IP地址的主机</ p>

  $ externalContent = file_get_contents('http://checkip.dyndns.com/'); 
preg_match(' /当前IP地址:([\ []:。[0-9a-fA-F] +)&lt; /',$ externalContent,$ myIp);
echo $ myexternalIp = $ myIp [1];
< / code> </ pre>
</ div>

展开原文

原文

You can use file_get_contents function for this. You just need to find a host which can return your ip address

$externalContent = file_get_contents('http://checkip.dyndns.com/');
preg_match('/Current IP Address: ([\[\]:.[0-9a-fA-F]+)</', $externalContent, $myIp);
echo $myexternalIp = $myIp[1];

Add a second IP to your server (ifconfig eth0:1 192.168.1.143) and use that in your router's port forwarding rules. That way, external accesses will be coming in through that address instead and you can tell the difference between the two.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐