在 XAMPP 中,数字的行为与真实服务器不同?
In XAMPP numbers act different than real servers?
我注意到只有 XAMPP 才发生错误。
我尝试使用其他 4 个实时托管帐户(包括 AWS、hostgator 和其他 2 个),它们对数字的操作都相同,但 XAMPP 不同。
这是当 运行 在真实服务器上使用相同的 echo 和 XAMPP:
时发生的情况
/* ALL SERVERS */
$testid = 5039307356925138;
echo (int)$testid;// 5039307356925138
echo $testid;// 5039307356925138
/* XAMPP AT WINDOWS 10 LOCALHOST*/
$testid = 5039307356925138;
echo (int)$testid;// 753691858
echo $testid;// 5.03930735692514E+15
这是什么意思,为什么!?
在这个问题上工作了几个小时后,检查了每个论坛 post,
我在 php.ini 中提高了精度并重新启动了 apache:
precision=20(注意所有在线服务器只有12!)
现在是:
/* XAMPP */
$testid = 5039307356925138;
echo (int)$testid;// 753691858
echo $testid;// 5039307356925138
正如您可能已经猜到的那样,它仍然不是解决方案,并且脚本无法正确 运行 因为 XAMPP 将 5039307356925138 视为 753691858 ?!?
此外,过度提高精度会导致诸如 3.250000000001% 或使用其他数字的问题。
我尝试用新版本重新安装 XAMPP,并在另一台计算机上尝试过,但都是一样的。
对于在 windows localhost 中使用 XAMPP 的那些人,您是否看到同样的问题?
可能是什么原因?如何修复????
由于您使用的是 XAMPP,因此 Windows 只有 32 位。这反过来意味着数字不能超过 [−2 147 483 648, 2 147 483 647] 的范围。在 Linux 和 iOS 我相信 XAMPP.
有 64 位版本
因此您的主机很可能使用 64 位版本,这将允许使用更大的数字作为整数。您看到的是溢出,已达到限制并且您从底部范围"start again"。
由于PHP是松散类型,字符串和整数可以与相同的值进行比较,例如
"10" == 10 // true
"11" == 10 // false
"10" === 10 // false because of strict comparison
因此,使用字符串而不是整数可能是一种解决方案(因为字符串的长度没有限制)。
从PHP7的release announcement开始,它宣布从PHP7开始,将一致支持64位。因此,如果 OS 运行 它,并且引擎是 64 位的 PHP7 或更高版本,您将完全支持 64 位(这反过来允许您使用更高的整数值)。
我注意到只有 XAMPP 才发生错误。
我尝试使用其他 4 个实时托管帐户(包括 AWS、hostgator 和其他 2 个),它们对数字的操作都相同,但 XAMPP 不同。 这是当 运行 在真实服务器上使用相同的 echo 和 XAMPP:
时发生的情况/* ALL SERVERS */
$testid = 5039307356925138;
echo (int)$testid;// 5039307356925138
echo $testid;// 5039307356925138
/* XAMPP AT WINDOWS 10 LOCALHOST*/
$testid = 5039307356925138;
echo (int)$testid;// 753691858
echo $testid;// 5.03930735692514E+15
这是什么意思,为什么!?
在这个问题上工作了几个小时后,检查了每个论坛 post,
我在 php.ini 中提高了精度并重新启动了 apache:
precision=20(注意所有在线服务器只有12!)
现在是:
/* XAMPP */
$testid = 5039307356925138;
echo (int)$testid;// 753691858
echo $testid;// 5039307356925138
正如您可能已经猜到的那样,它仍然不是解决方案,并且脚本无法正确 运行 因为 XAMPP 将 5039307356925138 视为 753691858 ?!?
此外,过度提高精度会导致诸如 3.250000000001% 或使用其他数字的问题。
我尝试用新版本重新安装 XAMPP,并在另一台计算机上尝试过,但都是一样的。
对于在 windows localhost 中使用 XAMPP 的那些人,您是否看到同样的问题?
可能是什么原因?如何修复????
由于您使用的是 XAMPP,因此 Windows 只有 32 位。这反过来意味着数字不能超过 [−2 147 483 648, 2 147 483 647] 的范围。在 Linux 和 iOS 我相信 XAMPP.
有 64 位版本因此您的主机很可能使用 64 位版本,这将允许使用更大的数字作为整数。您看到的是溢出,已达到限制并且您从底部范围"start again"。
由于PHP是松散类型,字符串和整数可以与相同的值进行比较,例如
"10" == 10 // true
"11" == 10 // false
"10" === 10 // false because of strict comparison
因此,使用字符串而不是整数可能是一种解决方案(因为字符串的长度没有限制)。
从PHP7的release announcement开始,它宣布从PHP7开始,将一致支持64位。因此,如果 OS 运行 它,并且引擎是 64 位的 PHP7 或更高版本,您将完全支持 64 位(这反过来允许您使用更高的整数值)。