2013-04-26 90 views
2

echo $_SERVER['SERVER_ADDR']總會讓步192.168.1.142,這是我的家庭網絡中的我的服務器的IP地址。我可以用我的外部IP訪問網站,因爲我已經設置了端口轉發在我的路由器,但$_SERVER['SERVER_ADDR']將只返回內部IP,不管我怎麼努力。Apache - PHP SERVER_ADDR顯示內部IP?

我怎樣才能讓$_SERVER['SERVER_ADDR']回到我的外部IP?

+0

這可以通過在這裏你可能已經設置的內網IP地址而不是外部IP地址 – 2013-04-26 06:03:43

+0

我沒有看到內部IP在Apache設置的任何地方申報,也沒有任何的.htaccess文件虛擬主機設置進行操作。如果我在'/ etc/hosts'中聲明'ext.ern.al.ip domain.tld',然後在我的虛擬主機設置中聲明'ServerName domain.tld',會有幫助嗎?我沒有任何線索。 – 2013-04-26 06:10:51

+0

嗯,我重新分析和只看到/ etc/hosts文件具有的影響,所以,你必須定義你的外部IP到這個文件&這會爲你的外部IP工作。 – 2013-04-26 06:19:45

回答

0

可以使用的file_get_contents功能這一點。你只需要找到一個主機可以回到你的IP地址

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

添加第二個IP到你的服務器(使用ifconfig eth0的:1 192.168.1.143)和使用,在你的路由器的端口轉發規則。這樣,外部訪問將通過該地址進入,而您可以分辨兩者之間的差異。