关于PHP获取服务器地址的方法
来源:互联网 发布:mac地址查询设备 编辑:程序博客网 时间:2024/06/14 23:10
1、获取服务器本地地址,最先想到的方法是根据$_SERVER['SERVER_ADDR']。
但在命令行运行程序时,获取就获取不到结果。
<?php var_dump($_SERVER['SERVER_ADDR']);
网页访问结果:string(14) "172.16.152.239"
命令行结果:
[root@lamp1 www]# php index.php
NULL
2、使用gethostbyname获取
对于命令行来说,可以取到$_SERVER['HOSTNAME'],如果在/etc/hosts里设置了本机名称对应的ip地址的话,则可以使用gethostbyname($_SERVER['HOSTNAME'])来获取服务器IP地址,再结合$_SERVER['SERVER_ADDR']就得到通用的方法
<?phpfunction get_server_ip(){ if(!empty($_SERVER['SERVER_ADDR'])) return $_SERVER['SERVER_ADDR']; return gethostbyname($_SERVER['HOSTNAME']);}var_dump(get_server_ip());
缺点也很明显:就是如果机器没有设置hosts的话gethostbyname就解析不出Ip地址,只能获取本机名称
3、使用系统命令
最原始也是最奏效的方法,使用底层信息ifconfig(ipconfig for windows)。使用shell_exec命令执行ifconfig,然后从字符串中解析出地址来
<?phpfunction get_server_ip(){ if(!empty($_SERVER['SERVER_ADDR'])) return $_SERVER['SERVER_ADDR']; $result = shell_exec("/sbin/ifconfig"); if(preg_match_all("/addr:(\d+\.\d+\.\d+\.\d+)/", $result, $match) !== 0){ foreach($match[0] as $k=>$v){ if($match[1][$k] != "127.0.0.1") return $match[1][$k]; } } return false;}
当然还可对windows做平台适配,这里就不做了,因为实际互联网公司的服务器中基本没有采用windows做服务器的,何况是PHP做后台语言的呢。:)
结束语:其实对于一个服务器来说,可能存在多个网口,所以获取服务器ip这个术语并不准确,它可以是一组ip,可能这也是为什么php没有提供一个通用的获取方法吧。
阅读全文
0 0
- 关于PHP获取服务器地址的方法
- PHP获取网卡MAC地址的方法
- PHP获取网卡MAC地址的方法
- php获取客户端ip地址的方法
- php获取服务器MAC地址
- php 获取服务器地址和客户端地址
- 获取服务器的地址
- 获取php服务器时间的方法
- PHP的$_SERVER['HTTP_HOST']获取服务器地址功能详解
- PHP的$_SERVER['HTTP_HOST']获取服务器地址功能详解
- PHP获取客户端和服务器的IP地址
- 关于WEB服务器如何获取客户端MAC地址的问题
- java中获取当前服务器的Ip地址的方法
- php 关于如何获取域名或者IP地址的$_SERVER['']
- ASP.NET获取服务器IP与MAC地址的方法
- PHP获取准确的IP地址的方法
- PHP获取客户端和服务器IP地址
- 使用PHP获取服务器MAC地址
- C# 利用函数反射、XML序列化/反序列化保存函数执行与输入参数列表
- 淘淘商城01---毕业两年,收货与展望
- 构造与析构
- 编译原理题
- linux篇之安装MySQL及远程连接
- 关于PHP获取服务器地址的方法
- Android 横竖屏切换
- 点击头像 侧滑菜单出现 仿QQ界面
- shell 文本替换 ---出现--- sed:-e 表达式 #1,字符 8:“s”的未知选项
- android Studio调试异常
- Consistent Hashing
- Swift
- tensorflow集群搭建
- spring in action_4 资源整理