php 64 bit avec php_int_max = 2147483647

J’ai installé WampServer 2.0 qui a apache 2.4.4, mysql 5.6.12 et php 5.4.12. Quand je fais écho à PHP_INT_MAX, cela m’a donné 2147483647. J’ai aussi echo phpinfo () et l’architecture indique x64. Cela suppose de ne pas se produire parce que mon php est 64 bits correctement? J’ai besoin de mon php pour supporter un nombre entier de 64 bits. J’ai besoin que mon PHP_INT_MAX soit 9223372036854775807.

Quelqu’un peut-il m’aider? Merci

    Si vous utilisez un système d’exploitation Windows, wampServer suggère que vous l’êtes, voici votre réponse :

    Sur Windows x86_64, PHP_INT_MAX est 2147483647. En effet, dans le code-C sous-jacent, un long est 32 bits.

    Notez que cela ne signifie pas que Windows ne supporte pas les int 64 bits: int64_t existe, mais il n’est pas utilisé par PHP AFAIK.
    J’ai réussi à trouver ce lien , sur cette page, il y a du code que vous pourriez utiliser, pour append le support pour les 64 bits ints à votre code

    Dans le fichier RequestUtil.php , il effectue la vérification suivante:

     if (strlen((ssortingng) 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__ . "\""); } 

    Vous pouvez le commenter et essayer de vous frayer un chemin à partir de là.

    Si j'étais vous, j'écrirais ma propre implémentation d'API Dropbox en utilisant des chaînes et non des entiers.

    PS : Mais c'est ce que je fais donc je l'apprécie 🙂

    Essayez PHP7 – le maître actuel http://windows.php.net/downloads/snaps/master/ . Les versions 64 bits exploitent désormais toutes les fonctionnalités de Windows 64 bits.

    Allez dans ‘vendeur / dropbox / dropbox-sdk / lib / Dropbox’
    et lignes de commentaires 19-23 dans RequestUtil.php.

    Commentez cette section:

     /*if (strlen((ssortingng) 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__ . "\""); }*/ 

    C'est tout.

    J’ai essayé php7 et ça a fonctionné:

    running php.exe -r "echo PHP_INT_MAX;"

    et il sort 9223372036854775807