gpt4 book ai didi

php - ksort 不可预测的整数溢出

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:31 24 4
gpt4 key购买 nike

在我的测试服务器上修复我的 PHP 应用程序后,我将它推送到我的生产服务器,但修复没有起作用。追踪之后,我发现 ksort() 仅在我的生产服务器上导致索引键溢出大于最大 32 位带符号值 (2147483648) 的整数。在我的测试服务器上,它只会溢出大于最大有符号 64 位整数 (9223372036854775808) 的整数。

两台服务器(据我所知)具有相同的软件配置

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

    1. 量产 CPU:AMD Phenom(tm) II X4 910
    2. 测试服务器上的 CPU:AMD Athlon(tm) II X4 620

重现这个问题

$arr = array(2147483648 => 1, 5 => 2); ksort($arr); print_r($arr);

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

Array
(
[-2147483648] => 1
[5] => 2
)

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

Array
(
[5] => 2
[2147483648] => 1
)

我正在尝试找出可能导致此问题的原因。我应该在哪里寻找缩小服务器具有不同整数大小的原因。我可能有不同版本的 PHP(即使两者看起来相同)是用 32 位整数编译的吗?

最佳答案

看看 PHP_INT_SIZE

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

Integer size can be determined using the constant PHP_INT_SIZE, and maximum value using the constant PHP_INT_MAX since PHP 4.4.0 and PHP 5.0.5.

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

关于php - ksort 不可预测的整数溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16324982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com