V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
studentht
V2EX  ›  PHP

PHP 如何获取本机 IP 列表

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

    不是机器的外网 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`
    cnyang
        6
    cnyang  
       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   ·   实用小工具   ·   5296 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:06 · PVG 17:06 · LAX 01:06 · JFK 04:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.