位置: 编程技术 - 正文

关于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)

  • 加计扣除内容
  • 进项税和销项税税率一样吗
  • 出售无形资产属于资产处置损益吗
  • 建筑劳务公司税负率多少才合适
  • 5000以下固定资产怎么做账
  • 小规模纳税人能用专票抵税吗
  • 记账人和复核人是一个人吗
  • 哪些单位和个人可构成全宗
  • 发票种类和适用范围
  • 作为一个财务 月末要做什么
  • 关于合并商誉应该减值还是摊销的辩论
  • 其他应付款跨年如何应对
  • 销售返利的税务政策
  • 所得税为负值是什么意思
  • 公司出租房屋交印花税吗
  • 营改增实施过程中的难点
  • 工程会计做账流程及会计分录
  • 外账成本要注意什么
  • 劳务派遣公司支付劳务费怎么做账
  • 收到质量赔偿款从总账做账可以
  • 小规模企业申报表填写
  • 企业社保缴费工资
  • 跨年退货会计处理
  • 代金券与抵扣券的区别
  • 债券利息收入属于什么会计科目
  • 分公司收到总公司利润分录怎么写
  • 损失赔偿金要开什么发票
  • 马尔堡酒庄
  • vue设置图片
  • 零星分布的意思
  • 巴芬岛旅游
  • 固定资产净残值率是多少
  • php短信验证免费接口配置
  • 帝国cms功能
  • 多计提费用可以不用以前年度损益调整吗
  • 工资应纳税额怎么算
  • 融资租赁的残值归出租人所有,为啥要减去租金限值
  • 在建工程完工后转入哪里
  • 开个人劳务发票怎么缴个人所得税
  • 拆迁支出包括哪些
  • 网上学电脑
  • 会展服务打印费怎么算
  • 单位人民币卡账户的资金一律从其基本存款账户转账存入
  • 公司社保外包了,没给我社保卡怎么办?
  • 企业取得土地补偿款
  • 纸质承兑汇票怎么兑现步骤
  • 会计做账的凭据是什么
  • 材料采购发票未到
  • 信息服务费可以抵扣吗
  • 公司如何注销营业执照
  • 企业所得税和增值税重复收税了吗
  • 工业企业外购材料采购成本包括
  • 如何获取数据库的sid
  • fix it club
  • windows2003服务不能开启
  • Windows计划任务 不管是否登录 没有窗口
  • win7开机过程中黑屏
  • 电脑打开win
  • ubuntu 电子书
  • msedge.exe是什么
  • Win7系统打开蓝牙
  • 主流安卓开发
  • [置顶] 《借.住.情.缘》
  • Python编程给定a=1,b=4,输出a+b的值
  • Linux 中的通配符详解及实例
  • Linux Shell中判断进程是否存在的方法
  • python 内连接
  • jquery常用选择器种类
  • 简述python语言
  • android4.4w
  • Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
  • 用js自动判断浏览记录
  • jquery.qtip提示信息插件用法简单实例
  • js 输入
  • 税务局的人工资多少
  • 如何参与发票摇奖
  • 全国征兵网官网报名
  • 社保每个月都要交吗,不交了会怎么样
  • 电子税务局都能完成哪些功能
  • 奔驰g500落地多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设