7
votes

PHP 64 bit avec php_int_max = 2147483647

J'ai installé Wamserver 2.0 qui a Apache 2.4.4, MySQL 5.6.12 et PHP 5.4.12. Quand j'échappe php_int_max il m'a donné 2147483647. J'ai aussi Echo Phpinfo () et l'architecture indique X64. Cela suppose qu'il ne se passe pas parce que mon PHP est de 64 bits non? J'ai besoin de mon PHP pour soutenir l'entier 64 bits. J'ai besoin de mon php_int_max pour être 9223372036854775807.

Quelqu'un peut-il m'aider? Merci


7 commentaires

long doit devenir long long dans la source PHP. Puis recompiler! :) - N'ayez aucune idée si cela fonctionnerait car cela pourrait briser des choses partout. J'espère qu'ils finissent par aller à une représentation longue de 64 bits. Mais il n'y a pas à peu près rien que vous puissiez faire à ce sujet. J'espère aussi qu'ils iront unicode ... mais il y a peu d'espoir.


Je ne suis pas à 100% en ce moment et trop occupé pour le regarder, mais floatts dans php sont double qui sont 64bit même sous Windows, tandis que floatts sont 32 bits. Donc, vous pourriez essayer de les utiliser.


Le problème est maintenant que je ne peux pas poursuivre mon code lorsque je l'exécute parce que j'essaie d'intégrer Dropbox sur mon site Web, lorsque j'exécute mon code à l'aide de Dropbox SDK, il a une erreur qui indique que ma version de PHP ne fait pas Support 64 bits entier, donc je ne peux pas procéder à l'intégration.


Pouvez-vous poster un message d'erreur?


Erreur fatale: Exception non capturée 'Exception' avec message 'Le SDK Dropbox utilise des entiers 64 bits, mais on dirait que nous sommes exécutés sur une version de PHP qui ne prend pas en charge les entiers 64 bits (php_int_max = 2147483647). Bibliothèque: "C: \ Wamp \ www \ dropbox-sdk \ dropbox \ requiertil.php" 'in c: \ wamp \ www \ dropbox-sdk \ dropbox \ requiertil.php à la ligne 15


S'il vous plaît, vérifiez Stackoverflow .Com / questions / 864058 / ... semble que vous ne pouvez pas avoir 64 bits entiers sur Windows


et IMHO, je pense qu'il vaut mieux utiliser la bibliothèque, qui utilisait la mise en œuvre des chaînes pour les grands nombres


5 Réponses :



4
votes

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

Vous pouvez le commenter et essayer de pirater votre chemin de là.

Si j'étais vous, j'écrirais ma propre implémentation de l'API Dropbox à l'aide de cordes et non d'entiers.

PS < / strong>: mais c'est ce que je fais, alors j'apprécie :)


2 commentaires

Merci pour la solution alternative, j'espère que cela ne causera pas de problèmes plus tard.


@ user2615039 Cela pourrait , mais vous pouvez au moins passer à autre chose avec des tests. Toujours essayer de traiter de longs entiers comme une chaîne et vous pourriez vous en sortir.



1
votes

Essayez php7 - le maître actuel http://windows.php.net/downloads/snaps / maître / . Les constructions 64 bits exploitent maintenant toutes les capacités des fenêtres 64 bits.


2 commentaires

"PHP 7 fournit un support complet 64 bits. Les bâtiments X64 de PHP 7 supportent les entiers natifs 64 bits, LFS, Memory_Limit et bien plus encore." Donc, toutes les constructions, non seulement Master: windows.php.net/download


Oui, 7,0 était maître au moment de l'affichage :) Après la GA, il est maintenant une construction de C.



-1
votes

J'ai essayé php7 et cela a fonctionné:

exécutant php.exe -r "echo php_int_max;"

et it sortie 9223372036854775807


0 commentaires

1
votes

Aller à 'Vendor / Dropbox / Dropbox-SDK / Lib / Dropbox'
et commentaire lignes 19-23 dans requestutil.php.

commentaire de cette section: xxx

c'est ça.


0 commentaires