PHP 如何获取本机 IP 列表

2018-01-11 18:51:16 +08:00
 studentht

不是机器的外网 ip,是机器网卡上的 ip 地址。

要求:

  1. 不能用 OS 的命令( ifconfig,……),因为目标机器很可能没有这个命令
  2. 跨平台,至少支持 Windows、OSX、Linux 3 个平台

PS:

我知道 swoole 有 swoole_get_local_ip()可以获取本地 ip 列表,但是不满足我跨平台的需求。

5288 次点击
所在节点    PHP
19 条回复
msg7086
2018-01-11 18:58:47 +08:00
你问的是和内核有关的问题,要跨平台当然是先判断目标平台然后分别调用相应的系统 API 了。
PHP 可能做不到这点,毕竟要调用 syscall。
msg7086
2018-01-11 19:01:09 +08:00
alpha1130
2018-01-11 19:20:58 +08:00
WEB 服务下面可以用$_SERVER['REMOTE_ADDR']拿到当前响应服务器的 IP
alpha1130
2018-01-11 19:21:54 +08:00
😯。。。。。。。。。没看到是内网
vex2
2018-01-11 19:23:19 +08:00
`ifconfig`
cnyang
2018-01-11 19:26:43 +08:00
下几个不同的 php 探针研究
owenliang
2018-01-11 20:08:36 +08:00
api 是有的 都是拿网卡的信息
yingfengi
2018-01-11 21:03:12 +08:00
研究下 php 探针
mingyun
2018-01-12 00:13:24 +08:00
>>> gethostbyname('')
=> "192.168.1.101"
iRiven
2018-01-12 00:19:09 +08:00
/proc/net/wireless
/proc/net/dev
这个目录下的文件 一个一个找过去
studentht
2018-01-12 10:18:37 +08:00
@vex2 望审题
@cnyang @yingfengi 找了几个看了。望审题
studentht
2018-01-12 10:19:42 +08:00
@owenliang 哪个 API ?你不会说的是系统的吧
owenliang
2018-01-12 10:45:38 +08:00
@studentht 嗯 是系统 api ioctl 这种 你一搜就有啦 本质就是拿网卡列表
studentht
2018-01-12 11:15:54 +08:00
@owenliang 不到万不得已,我是不想去写扩展啊。
zsdroid
2018-01-12 15:12:53 +08:00
php -r "echo gethostbyname(gethostname())"
zsdroid
2018-01-12 15:14:19 +08:00
少了分号,v2ex 好像没有编辑功能。。
studentht
2018-01-13 14:41:38 +08:00
@zsdroid 谢谢回答。但是……
sunchuo
2018-01-13 22:21:14 +08:00
gethostbyname(gethostname());
282853251
2018-01-14 15:02:20 +08:00
只写 PHP 代码,你的这个需求,做不到。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/422129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX