V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
JiaFeiX
V2EX  ›  问与答

Linux 下检测 PHP 是 32 位,还是 64 位?

  •  
  •   JiaFeiX · 2017-05-04 17:57:28 +08:00 · 3478 次点击
    这是一个创建于 2793 天前的主题,其中的信息可能已经有所发展或是发生改变。

    除了写 PHP 脚本检测, 在 phpinfo 的信息下, 发现没有 WIN 下的 archtech 这个选项哎

    Linux 下能在 phpinfo 或者 命令行下查看 PHP 版本吗?

    9 条回复    2017-05-05 08:10:50 +08:00
    JiaFeiX
        1
    JiaFeiX  
    OP
       2017-05-04 17:59:13 +08:00
    “官方发布的 PHP 版本均为 32 位,一般来说不区分 32 位和 64 位,或者 64 位操作系统兼容 32 位的 PHP,但是在某些操作系统上还是区分 32 位和 64 位的,例如 windows 2008。”

    在网上看到这个说法, 这个说法 对吗?
    JiaFeiX
        2
    JiaFeiX  
    OP
       2017-05-04 18:05:18 +08:00
    function is_64bit() {
    $int = "9223372036854775807";
    $int = intval($int);
    if ($int == 9223372036854775807) {
    /* 64bit */
    return true;
    }
    elseif ($int == 2147483647) {
    /* 32bit */
    return false;
    }
    else {
    /* error */
    return "error";
    }
    }

    echo "64 位检测:";

    var_dump(is_64bit());

    echo "32 位检测:";

    function is_32bit()
    {
    $time = strtotime('2040-01-01 00:00:00');
    if($time===false)
    {
    return true;
    }

    return false;
    }
    var_dump(is_32bit());

    phpinfo();
    zsdsz
        3
    zsdsz  
       2017-05-04 18:14:43 +08:00
    @JiaFeiX 你写得太复杂了 PHP_INT_SIZE 就行了 4 字节的是 32 位 8 字节的是 64 位
    billlee
        4
    billlee  
       2017-05-04 22:07:51 +08:00
    @JiaFeiX #1 然而 *nix 下的 php 都是发行版编译的,和官方一点关系都没有
    zsx
        5
    zsx  
       2017-05-04 22:32:54 +08:00
    @JiaFeiX #1
    @zsdsz

    这个在 PHP 5 时代是不准的,在 Windows 下 64 位也是 4 字节: https://blog.zsxsoft.com/post/7
    esile
        6
    esile  
       2017-05-05 00:48:59 +08:00 via iPhone
    应该跟系统有关系
    shiny
        7
    shiny  
       2017-05-05 00:53:45 +08:00
    以前掉一个坑里,32 位系统在 ip2long 时候有可能超出整型范围,变负数。
    caola
        8
    caola  
       2017-05-05 02:21:32 +08:00
    php 都是发行的是原代码,你要通过编译才能安装,这与 32 位、64 位并没有什么直接关系吧,应该取决于你使用的编译器。
    上面提到的 PHP_INT_SIZE 只是常量而已,表明 int 数据类型所占用的字节数和所处理的数量级,相当于 mysql 里的 int 和 bigint 数据类型一样一样的。

    (以上纯属个人 YY,没有什么依据,请听楼下分解!)
    artandlol
        9
    artandlol  
       2017-05-05 08:10:50 +08:00 via Android
    getconf LONG_BIT 查看机器码位数
    调用下系统命令呗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1064 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:42 · PVG 06:42 · LAX 14:42 · JFK 17:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.