关于PHP转换超过2038年日期出错的问题解决
前言最近在写一个项目接口。测试中发现服务器上测试正常的功能,在本地一直有问题。一步步的排查,最终锁定问题是由于函数 相同代码运行结果不一样,原因那就是环境不一致导致。要么是PHP版本不同,要么是位数不同。 我电脑是64位的。这里是PHP位数不一致,服务器使用64位,而我本地是32位。而 Y2K38漏洞导致上述问题的根本原因就是 32位系统或PHP此漏洞将会影响到所有 32 位系统下用UNIX 时间戳整数来记录时间的 PHP,及其它编程语言。一个整型的变量所能保存的最大时间为 64位系统或PHP64位系统下可以保存的日期最远日期是现在宇宙年龄的21倍——292亿年。所以不会受到该漏洞影响。 如何检测如何知道你的系统是否收到该漏洞的影响。很简单,直接使用 下面具体演示一下 方法一上面结果如果返回2050-12-31 23:59:59那么就没有问题。如果返回1914-11-25 09:31:43那么就受收到影响。 方法二上面结果如果返回 解决方案方案一更换系统和PHP均为64位。这个代价比较大,但是可以永久解决问题。 方案二PHP5.2版本之后提供了一个函数 // 2、时间戳转换为日期字符串 // 而且DateTime还可以有其他玩法 通过 总结以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程之家的支持。 (编辑:阜新站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |