首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可预测的带ksort的整数溢出

不可预测的带ksort的整数溢出
EN

Stack Overflow用户
提问于 2013-05-01 19:27:49
回答 1查看 142关注 0票数 2

在我的测试服务器上对我的PHP应用程序进行了修复之后,我将它推到了我的生产服务器上,这个修复程序没有工作。跟踪它之后,我发现ksort()导致索引键溢出,而整数的大小仅限于我的生产服务器上的最大32位有符号值(2147483648)。在我的测试服务器上,只有大于最大有符号64位整数(9223372036854775808)的整数才会溢出。

这两个服务器(据我所知)都有相同的软件配置。

  • Ubuntu 12.10
  • 内核版本: Linux版本3.0.0-15-泛型-pae
  • PHP 5.4.6-1 ubuntu1.2

代码语言:javascript
复制
1. CPU on production: AMD Phenom(tm) II X4 910
2. CPU on test server: AMD Athlon(tm) II X4 620

复制这个问题

代码语言:javascript
复制
$arr = array(2147483648 => 1, 5 => 2); ksort($arr); print_r($arr);

在我的生产服务器上输出以下内容:

代码语言:javascript
复制
Array
(
    [-2147483648] => 1
    [5] => 2
)

完全相同的代码在我的测试服务器上输出以下内容:

代码语言:javascript
复制
Array
(
    [5] => 2
    [2147483648] => 1
)

我想找出是什么导致了这一切。我应该在哪里缩小为什么服务器有不同的整数大小。我是否可能有一个用32位整数编译的不同版本的PHP (尽管两者看起来是相同的)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-01 19:35:44

看看PHP_INT_SIZE

http://php.net/manual/en/language.types.integer.php

整数大小可以使用常量PHP_INT_SIZE来确定,最大值可以使用自PHP4.4.0和PHP5.0.5以来的常量PHP_INT_MAX来确定。

我还建议在php.ini或ini_set()中增加PHP。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16324982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档