跳转到主要内容
你行网

Main navigation

  • 首页
  • 文章
  • 教程
  • 视频
  • 下载
  • 社区
  • 网站导航
User account menu
  • 登录

面包屑

  1. 首页

32位PHP的局限性

由 hrs, 19 七月, 2019
标签
drupal

如果在编译PHP的系统上运行Drupal或限制为使用32位整数,则只能输入1901年到2038年之间的日期(特别是1901年12月13日20:45:52 UTC到03:14: 07年1月19日UTC时间20)。这通常被称为2038错误。

通常的症状是将日期显示或记录为1970-01-01,而不是超出上述范围的预期值。这将影响所有 PHP应用程序。特别是在Drupal中,基于日期的字段类型受到影响,即仅日期和日期和时间,包括“选择列表”小部件。您可以选择1900到2038范围之外的年份,但由于PHP本身无法处理它们,它们将在没有警告的情况下存储/显示为1970-01-01。

受影响的产品

  • 适用于x86的PHP 5.x / 7.x和适用于x64的PHP 5.x的官方Windows版本。
  • 任何带有PHP编译为32位和/或在32位系统上运行的Web堆栈包(XAMPP,Wamp等)。
  •  在 2018年6月14日发布之前的Acquia Dev Desktop 2(它现在使用64位PHP和MySQL)。

注意:PHP本身的编译方式如下:如果你在64位操作系统中运行32位版本的PHP,你仍然会遇到这个问题。

测试

要测试您的PHP是否受到影响,您可以运行此命令(作为一行):

php -r "echo (date('y',strtotime('2039-01-01')) == 39 ? 'OK' : 'Y2K38 limitation') . PHP_EOL;"

打印OK受影响的PHP实例时,将打印未受影响的PHP实例Y2K38 limitation。

评论

  • 登录或注册以发表评论

相关文章

RSS源
本站由阿里云强力驱动,幸运券优惠链接
Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号