A-A+
PHP如何获取本机的IP地址
PHP获取本机的IP完全可以使用PHP的自带函数,但我的LINUX貌似是被禁止获取IP的,即使本地的也不行,初步判断应该是PHP.INI中禁止使用PHP函数了,好吧,也只能自己写一个function的方法了,主要获取 LINUX操作系统的本机IP地址,因为调试的使用,所以也需要在win2000/xp/win7中进行IP获取的测试,这里就一并写出来了,在测试机也可以进行使用,具体的方法如下:
- function getLocalIP() {
- $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";
- //获取操作系统为win2000/xp、win7的本机IP真实地址
- exec("ipconfig", $out, $stats);
- if (!emptyempty($out)) {
- foreach ($out AS $row) {
- if (strstr($row, "IP") && strstr($row, ":") && !strstr($row, "IPv6")) {
- $tmpIp = explode(":", $row);
- if (preg_match($preg, trim($tmpIp[1]))) {
- return trim($tmpIp[1]);
- }
- }
- }
- }
- //获取操作系统为linux类型的本机IP真实地址
- exec("ifconfig", $out, $stats);
- if (!emptyempty($out)) {
- if (isset($out[1]) && strstr($out[1], 'addr:')) {
- $tmpArray = explode(":", $out[1]);
- $tmpIp = explode(" ", $tmpArray[1]);
- if (preg_match($preg, trim($tmpIp[0]))) {
- return trim($tmpIp[0]);
- }
- }
- }
- //www.xiariboke.net
- return '127.0.0.1';
- }
这种方法是不太建议使用的,这是自己测试使用的PHP方法,这里一定要和获取用户IP地址的方法区别开,PHP的函数 $_SERVER['REMOTE_ADDR'] 是获取用户的IP地址,也就是你客户端的IP地址,而上面的方法是获取我主机服务器的IP地址,如果要在服务器上面测试的话,直接使用 $_SERVER['REMOTE_ADDR'] 就OK了,如果我在客户端想要获取 linux 主机端的 IP,就只能使用上面的 function 方法了,这里一定要做个区分。