PHP 如何获取本机 IP 列表 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
studentht
V2EX    PHP

PHP 如何获取本机 IP 列表

  •  
  •   studentht 2018-01-11 18:51:16 +08:00 5967 次点击
    这是一个创建于 2847 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    要求:

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

    PS:

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

    19 条回复    2018-01-14 15:02:20 +08:00
    msg7086
        1
    msg7086  
       2018-01-11 18:58:47 +08:00
    你问的是和内核有关的问题,要跨平台当然是先判断目标平台然后分别调用相应的系统 API 了。
    PHP 可能做不到这点,毕竟要调用 syscall。
    msg7086
        2
    msg7086  
       2018-01-11 19:01:09 +08:00
    alpha1130
        3
    alpha1130  
       2018-01-11 19:20:58 +08:00
    WEB 服务下面可以用$_SERVER['REMOTE_ADDR']拿到当前响应服务器的 IP
    alpha1130
        4
    alpha1130  
       2018-01-11 19:21:54 +08:00
    。。。。。。。。。没看到是内网
    vex2
        5
    vex2  
       2018-01-11 19:23:19 +08:00
    `ifconfig`
    bigtwo
        6
    bigtwo  
       2018-01-11 19:26:43 +08:00
    下几个不同的 php 探针研究
    owenliang
        7
    owenliang  
       2018-01-11 20:08:36 +08:00 via Android
    api 是有的 都是拿网卡的信息
    yingfengi
        8
    yingfengi  
       2018-01-11 21:03:12 +08:00
    研究下 php 探针
    mingyun
        9
    mingyun  
       2018-01-12 00:13:24 +08:00
    >>> gethostbyname('')
    => "192.168.1.101"
    iRiven
        10
    iRiven  
       2018-01-12 00:19:09 +08:00 via Android
    /proc/net/wireless
    /proc/net/dev
    这个目录下的文件 一个一个找过去
    studentht
        11
    studentht  
    OP
       2018-01-12 10:18:37 +08:00
    @vex2 望审题
    @cnyang @yingfengi 找了几个看了。望审题
    studentht
        12
    studentht  
    OP
       2018-01-12 10:19:42 +08:00
    @owenliang 哪个 API ?你不会说的是系统的吧
    owenliang
        13
    owenliang  
       2018-01-12 10:45:38 +08:00 via Android
    @studentht 嗯 是系统 api ioctl 这种 你一搜就有啦 本质就是拿网卡列表
    studentht
        14
    studentht  
    OP
       2018-01-12 11:15:54 +08:00
    @owenliang 不到万不得已,我是不想去写扩展啊。
    zsdroid
        15
    zsdroid  
       2018-01-12 15:12:53 +08:00
    php -r "echo gethostbyname(gethostname())"
    zsdroid
        16
    zsdroid  
       2018-01-12 15:14:19 +08:00
    少了分号,v2ex 好像没有编辑功能。。
    studentht
        17
    studentht  
    OP
       2018-01-13 14:41:38 +08:00
    @zsdroid 谢谢回答。但是……
    sunchuo
        18
    sunchuo  
       2018-01-13 22:21:14 +08:00
    gethostbyname(gethostname());
    282853251
        19
    282853251  
       2018-01-14 15:02:20 +08:00
    只写 PHP 代码,你的这个需求,做不到。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5577 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 01:36 PVG 09:36 LAX 18:36 JFK 21:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86