php writevarint64_关于 64 位 PHP 使用 PHP_INT_SIZE 输出得到 4 的问题

很尴尬,为什么phpinfo()中的 PHP 是 64 位,而获取PHP_INT_SIZE的值确是 4

就上周的文章:怎么快速判断 PHP 是 32 位还是 64位,可以查看PHP_INT_SIZE的值来判断 PHP 位数

本地使用 phpstudy 得到的结果是 4,也就是 32 位的 PHP,服务器上得到的是 8,64 位 PHP,没什么问题啊,就这么完了

结果今天来了一个使用 wamp 集成环境的,phpinfo()得到的是 64 位的,swoole_loader 扩展也安装成功的了,但是被提示了一句 32 位 PHP

要来了他使用的集成环境版本:wampserver3.0.6_x64,本地安装一下,默认 PHP 版本为 5.6.25

既然PHP_INT_SIZE有问题,那么用 PHP 官方的说法:输出一个超过 42 亿的整数

var_dump(12345678900);

结果居然也是float(12345678900),很明显 PHP 是 32 位的

但是为什么phpinfo()中的 PHP 是 64 位

emmmm,幸好我当时给温馨提示的时候加了让在phpinfo()中查看对应位数,如果误报请忽略提示

具体原因可以看一下 PHP 的代码记录,在 PHP 的main/main.c中查

REGISTER_MAIN_LONG_CONSTANT("PHP_INT_SIZE", sizeof(long), CONST_PERSISTENT | CONST_CS);

REGISTER_MAIN_LONG_CONSTANT("PHP_INT_SIZE", SIZEOF_ZEND_LONG, CONST_PERSISTENT | CONST_CS);

所以,PHP7中,应该不会再出现这个问题了,其他是个别版本

沈唁志,一个PHPer的成长之路!

任何个人或团体,未经允许禁止转载本文:《关于 64 位 PHP 使用 PHP_INT_SIZE 输出得到 4 的问题》,谢谢合作!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值