php 64位,php_int_max = 2147483647

时间:2013-07-24 14:36:26

标签: php windows int

我安装了WampServer 2.0,它有apache 2.4.4,mysql 5.6.12和php 5.4.12。当我回显PHP_INT_MAX时,它给了我2147483647.我还有回显phpinfo(),架构表示x64。这假设没有发生,因为我的PHP是64位吗?我需要我的PHP支持64位整数。我需要我的PHP_INT_MAX为9223372036854775807。

有人能帮助我吗?感谢

5 个答案:

答案 0 :(得分:10)

如果你正在运行Windows操作系统,wampServer会建议你,this is your answer

  

在Windows x86_64上,PHP_INT_MAX是2147483647.这是因为在   底层的c代码,长是32位。

请注意,这并不意味着Windows不支持64位int:int64_t确实存在,但PHP AFAIK不使用它。
我已设法提出this link,在该页面上,您可以使用一些代码,为您的代码添加对64位整数的支持

答案 1 :(得分:4)

在文件RequestUtil.php中,它会执行以下检查:

if (strlen((string) PHP_INT_MAX) < 19) {
    // Looks like we're running on a 32-bit build of PHP.  This could cause problems because some of the numbers
    // we use (file sizes, quota, etc) can be larger than 32-bit ints can handle.
    throw new \Exception("The Dropbox SDK uses 64-bit integers, but it looks like we're running on a version of PHP that doesn't support 64-bit integers (PHP_INT_MAX=" . ((string) PHP_INT_MAX) . ").  Library: \"" . __FILE__ . "\"");
}

您可以将其评论出来并尝试从那里进行黑客攻击。

如果我是你,我会使用字符串编写自己的Dropbox API实现,而不是整数。

PS 但这就是我所做的,所以我喜欢它:)

答案 2 :(得分:1)

尝试PHP7 - 当前的主人http://windows.php.net/downloads/snaps/master/。 64位版本现在利用了64位Windows的所有功能。

答案 3 :(得分:1)

转到&#39; vendor / dropbox / dropbox -sdk / lib / Dropbox&#39;
并在RequestUtil.php中注释第19-23行。

评论此部分:

/*if (strlen((string) PHP_INT_MAX) < 19) {
    // Looks like we're running on a 32-bit build of PHP.  This could cause problems because some of the numbers
    // we use (file sizes, quota, etc) can be larger than 32-bit ints can handle.
    throw new \Exception("The Dropbox SDK uses 64-bit integers, but it looks like we're running on a version of PHP that doesn't support 64-bit integers (PHP_INT_MAX=" . ((string) PHP_INT_MAX) . ").  Library: \"" . __FILE__ . "\"");
}*/

那就是它。

答案 4 :(得分:-1)

我尝试过php7并且有效:

running php.exe -r "echo PHP_INT_MAX;"

并输出9223372036854775807