位置: 编程技术 - 正文

关于PHP转换超过2038年日期出错的问题解决(php类型转换的两种方法)

编辑:rootadmin

推荐整理分享关于PHP转换超过2038年日期出错的问题解决(php类型转换的两种方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php类型转换的两种方法,php怎么转换,php怎么转换,php 类型转换,php转换数据类型,php 转go,php转换数据类型,php怎么转换,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

最近在写一个项目接口。测试中发现服务器上测试正常的功能,在本地一直有问题。一步步的排查,最终锁定问题是由于函数strtotime返回了一个false值,导致数据插入数据库失败。

相同代码运行结果不一样,原因那就是环境不一致导致。要么是PHP版本不同,要么是位数不同。

我电脑是位的。这里是PHP位数不一致,服务器使用位,而我本地是位。而strtotime被传入了一个字符串-1-1 ::,该参数大于了-1- ::所以在位PHP下直接返回false,而位PHP不受影响。

Y2K漏洞

导致上述问题的根本原因就是Y2K漏洞,也被称为Unix Millennium Bug。

位系统或PHP

此漏洞将会影响到所有 位系统下用UNIX 时间戳整数来记录时间的 PHP,及其它编程语言。一个整型的变量所能保存的最大时间为 年月 日 ::。超过这个时间后,整型数值将会溢出。

位系统或PHP

位系统下可以保存的日期最远日期是现在宇宙年龄的倍——亿年。所以不会受到该漏洞影响。

关于PHP转换超过2038年日期出错的问题解决(php类型转换的两种方法)

如何检测

如何知道你的系统是否收到该漏洞的影响。很简单,直接使用strtotime去转换一个大于年1月日::日期。或者使用date函数将一个大于时间戳转换为日期。

下面具体演示一下

方法一

上面结果如果返回-- ::那么就没有问题。如果返回-- ::那么就受收到影响。

方法二

上面结果如果返回那么就正常。如果返回false那么也会受到影响。

解决方案

方案一

更换系统和PHP均为位。这个代价比较大,但是可以永久解决问题。

方案二

PHP5.2版本之后提供了一个函数DateTime可以临时解决一下问题。

通过DateTime类来操作日期不会受到Y2K漏洞的影响,可以最远支持到年月日

总结

标签: php类型转换的两种方法

本文链接地址:https://www.jiuchutong.com/biancheng/289195.html 转载请保留说明!

上一篇:PHP用continue跳过本次循环中剩余代码的注意点(php exit绕过)

下一篇:php实现微信模拟登陆、获取用户列表及群发消息功能示例(php wechat)

  • 增值税进项税额不得抵扣的几种情形
  • 未交增值税借方表示什么意思
  • 金税盘的作用是什么意思
  • 没有参加会计继续教育会怎样
  • 公司向法人还回借款现金的分录
  • 美容行业如何做活动
  • 打印社保缴费凭证需要什么证件
  • 个人厂房租赁税率是多少
  • 工程资金占用计算利率是多少
  • 外商投资企业采购国产设备退税后续监管办法
  • 附加税减免税会计处理怎么做?
  • 收到联营单位预收的发票
  • 公司购买饮水机的申请
  • 免税企业以前年收入多少
  • 企业间借贷利息如何入账
  • 资金账簿印花税最新政策2023
  • 未取得合法票据费用怎么算
  • 固定资产处置的账务处理
  • 开票系统怎么改管理员名字
  • 已做了进项的发票金额错了怎么处理
  • 企业滞纳金属于什么会计科目
  • 应交税费待抵扣进项税额是什么科目
  • 申报个税按计提工资还是实际发放
  • 小规模纳税人增值税免征额
  • 1697509479
  • 拆迁补偿款需要交企业所得税吗
  • 预提未收的租金怎么入账
  • 政府返还的资金如何处理
  • centos 6.5安装教程
  • 小规模餐饮业怎样报税减免
  • 现在windows11
  • 入账成本包括增值税税额吗
  • win7电脑开启麦克风权限设置
  • 喝咖啡的好处和坏处 女性
  • 辞退补偿款怎么算
  • 建筑 营改增
  • 前端调用后端代码
  • cp命令使用
  • 职工福利能开专票吗
  • 收到外币收入怎么入账
  • 劳务派遣公司账务处理
  • SQLite速度评测代码
  • 织梦cms官网
  • 借款的帐务处理?
  • 购买设备配件
  • 教育培训业能享受补贴吗
  • 固定资产处置的账务处理 终于搞明白了!
  • 公司对公账户转给个人
  • 提取法定盈余公积金的比例是多少
  • 买车险要先付钱再上牌吗
  • 进项税额转出可以在所得税前扣除吗
  • 建筑企业结转收入成本
  • 提前支付利息如何计算
  • sqlserver2008分页查询
  • sql server使用教程(图文)
  • 联想s5s531笔记本M2
  • window10怎么window7
  • ubuntu禁用服务命令
  • windows没网络是怎么回事
  • mac10.10.5无法升级
  • linux退出telnet服务
  • win10系统组策略怎么打开
  • vs2019创建安装程序
  • 怎么查看opengl版本
  • jquery 刷新div
  • JavaScript中的方法名不区分大小写
  • android基础入门教程
  • @jsondeserialize
  • Eclipse ctrl+shift+r
  • 异步加载场景
  • python字符串的编码规则
  • android图片适配方法
  • 详解js跨域原理是什么
  • js怎么判断日期大小
  • 郑州市高新区税务局地址
  • 深圳龙华街道办电话
  • 留抵税额过多怎么办
  • 江西省电子税务局公众查询
  • 三方协议暂不支持缴款
  • 陕西的发票在哪里领取
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设