logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动
07/10/2025, by Ivan

如果您在一个 PHP 被编译或限制为使用 32 位整数的系统上运行 Drupal,那么您只能输入 1901 年至 2038 年之间的日期(具体而言,从 1901 年 12 月 13 日 UTC 时间 20:45:52 到 2038 年 1 月 19 日 UTC 时间 03:14:07)。这被广泛称为 2038 年问题

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

受影响的产品

  • 官方的 PHP 5.x / 7.x Windows x86 版本和 PHP 5.x x64
  • 任何包含 32 位版本 PHP 的 Web 堆栈包(如 XAMPP、Wamp 等)和/或运行在 32 位系统上的版本。
  • Acquia Dev Desktop 2 在 2018 年 6 月 14 日之前的版本(现在已使用 64 位的 PHP 和 MySQL)。

注意:关键在于 PHP 本身是如何编译的。如果您在 64 位操作系统上运行 32 位版本的 PHP,您仍然会遇到此问题。

测试

要检查您的 PHP 是否受到影响,您可以运行以下命令(单行执行):

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

未受影响的 PHP 实例会输出 OK,而存在漏洞的 PHP 实例会输出 Y2K38 limitation