作者:成都长风云Drupal开发团队
一、下载地址
https://ftp.drupal.org/files/projects/drupal-12.0.0-alpha1.tar.gz
二、版本发布说明
这是 Drupal 下一个主版本的Alpha 预览版。该 Alpha 版本面向模块、主题开发者,用于提前测试自身代码能否适配 Drupal 12.0.x 中大量依赖项变更。Drupal 12 的 Alpha 版本严禁用于生产环境。Drupal 12 各个 Alpha 版本之间,以及从 Alpha 版升级至 Drupal 12.0.0-beta1,均不提供升级路径。
1、模块与主题或将迁移至贡献仓库(12.0.0-beta1)
搜索(Search)模块、工具栏(Toolbar)模块,以及 Claro、Olivero 两款后台主题,计划在 Drupal 12 中从内核移除,但在 alpha1 版本暂未正式删除。
2、HTMX 将升级至 4.x(12.0.0-beta1)
当前 Drupal 内置 HTMX 版本为 v2,v4 新版本已发布,将会内置进 Drupal12。
其余大部分破坏性变更代码,已经提交并入 Drupal12 代码库。
想要了解更多 12.0.x 的开发进展,请查阅:[https://www.drupal.org/node/3449806](https://www.drupal.org/node/3449806)
3、12.0.x 和 11.5.x 的主要差异
除下面列出的改动以外,12.0.x 版本大体和 11.5.x 保持一致:
(1)删除所有已标记废弃的代码,包括整套废弃模块
(2) 根据实际需求,将第三方依赖升级至对应的新主版本
(3) 更新系统运行环境要求
三、站点在升级到 Drupal 12 之前,应当先升级至 11.4 或 11.5 的最新版本。
运行 Drupal 11.3.x 或更早版本的站点,在升级至 Drupal 12 之前,必须先升级到 11.4.0 及以上版本。因为所有在 11.4.0 版本之前加入的内核升级迁移脚本均已被移除。
一般来说,站点升级到下一个主版本前,应当先升级到当前主分支的最新发行版。我们强烈建议在升级 Drupal 12 之前,先升级至 11.5.0 或更高版本。
四、重要信息
1、平台要求变更
PHP 要求
Drupal 12 需要 PHP 8.5。
Drupal 12 将默认密码哈希算法更换为 argon2id。极少数不适合使用该算法、或是服务器不支持 argon2 的场景,可以通过内核参数切换为 PHP 默认算法(bcrypt)。
数据库要求
Drupal 12 所支持的各数据库驱动版本要求如下:
- MySQL 数据库驱动:MySQL 8.0
- MariaDB 数据库驱动:MariaDB 10.11
- PostgreSQL 数据库驱动:PostgreSQL 19
- SQLite 数据库驱动:SQLite 3.45,并启用 json1 扩展
Web 服务器
更多信息请查阅:https://www.drupal.org/docs/getting-started/system-requirements/web-server-requirements
浏览器支持变更
更多信息请查阅:https://www.drupal.org/docs/system-requirements/browser-requirements
Windows 生产环境
已废弃直接在 Windows 生产环境部署 Drupal 的支持。Windows 并不是一个成熟受支持的运行环境,我们没有 Windows 自动化测试环境,可在 Windows 上开展测试的开发者也很少。因此打算在生产环境使用 Windows 服务器的站点,应规划采用 Windows 上运行 Linux 的方案。
2、已移除 11.4.0 之前版本的数据库升级路径
Drupal 12.0.x 已经移除了 Drupal 11.4.0 之前版本新增的数据库升级脚本。如需升级到 Drupal 12,请参考:[https://www.drupal.org/node/3585783](https://www.drupal.org/node/3585783)。我们建议在升级 Drupal 12 之前,先升级到最新的 Drupal 11.x 内核版本,并将所有贡献模块更新至最新发行版。
3、Migrate Drupal 与 Migrate Drupal UI 已从内核移除,且未迁移至贡献项目
站点仍然可以先从 Drupal 6 或 Drupal 7 迁移到 Drupal 11,再通过常规升级流程从 Drupal 11 更新至 Drupal 12。Drupal 6 已于 2016 年 2 月终止生命周期,Drupal 7 于 2025 年 1 月终止生命周期。
迁移 API(Migrate API)仍然保留在内核中。
4、站点所有者管理文件的相关变更
robots.txt 文件现已(详见 [https://www.drupal.org/node/3567198](https://www.drupal.org/node/3567198))禁止搜索引擎抓取站内搜索页面。此前搜索引擎会收录动态生成的搜索结果、无限抓取筛选搜索页面组合,造成站点性能下降、SEO 质量受损。
自定义过 robots.txt 的站点管理员,需要在 robots.txt 中增加如下规则:
Disallow: /search?
Disallow: /index.php/search?
5、多个内核扩展已从内核移除,迁移至贡献项目
大量模块与主题已经从 Drupal 内核移出,转为贡献项目。多数情况下,这些被移除的扩展对站点开发几乎没有影响。
站点升级 Drupal 12 前,请对照下面清单核查已安装模块:要么卸载该扩展,要么在 Composer 依赖中引入对应的贡献版本。如果站点业务依赖该被移除扩展的功能,**升级前应先在 Composer 依赖里添加对应的贡献版本,不要直接卸载扩展,卸载会清空该扩展的配置数据。
Drush 在执行 update.php 升级时,可能跳过因扩展缺失产生的警告与报错;升级完成后,状态报告会展示缺失扩展相关的错误。
- Ban
- Contact
- Field Layout
- History
- Settings Tray
- Shortcut
- Telephone
- Stable 9
6、依赖包更新
- Symfony 更新至 8.1
- Guzzle 更新至 8.0
- PHPUnit 更新至 12.5
7、移除对部分老旧依赖版本的支持:
- doctrine/lexer:2
- egulias/email-validator:3
- guzzlehttp/guzzle:7
- guzzlehttp/psr7:2
- justinrainbow/json-schema:5
- micheh/phpcs-gitlab:1
- sebastian/diff:4、5、6
在 beta1 版本发布前,后端与前端依赖包还可能会有更多变更。

