PHP浮动错误:PHP挂起数值

jer*_*oen 4 php floating-point numeric

我刚读了一篇关于php挂在某些浮点数上的有趣文章,请参阅The RegisterExploring Binary.

我从来没有明确使用浮动,我number_format()用来清理我的输入和显示例如价格.

另外,据我所知,来自示例表单的所有输入都是字符串,直到我告诉他们,所以我认为这个问题不会影响我.

我是对的,还是我需要检查我的服务器上的Wordpress和Squirrelmail安装,看看他们是否投了任何东西浮动?或者更好,grep我的服务器上的所有php文件float

Sta*_*asM 5

如何缓解这个问题:

  1. 使用现代CPU.大多数现代的64位CPU都是免疫的(我实际上很难找到允许重现它的主机,因为它们倾向于使用更现代的硬件).亚马逊虚拟机似乎也具有免疫力.
  2. 升级您的PHP版本 - 5.3.5和5.2.17一旦发布(可能是今天)包括修复.
  3. 使用-ffloat-storeCFLAGS 构建(将减慢代码速度).
  4. 手动将补丁应用于您的代码并重建PHP.

寻找在许多字符串 - >数字转换方案中引擎使用的代码float可能无济于事zend_strtod.

PS这段代码btw是标准的BSD库strtod代码,不是PHP特有的.因此,使用此代码的其他项目也可能会受到影响.