1.2.1. 更新 Drupal 8 的模块和核心
Drupal 8 的核心和模块经常会发布更新。并非所有更新都必须安装,最重要的是关注安全更新。Drupal 会用红色提示这些关键更新。更新的方式取决于你最初是如何安装 Drupal 的——如果你是通过 Composer 创建的项目,那么可以直接用 Composer 来更新;如果是从 drupal.org 下载的压缩包安装的,就需要手动更新。
通过 Composer 更新 Drupal
使用 Composer 更新 Drupal 是一项非常常规的任务,只需执行一条命令:
composer update drupal/core --with-dependencies
务必要加上 --with-dependencies
参数,以确保依赖的 PHP 库也能同步更新。执行完命令后,需要运行 update.php
文件,或者使用命令:
drush updatedb
或
drupal update:execute
手动更新 Drupal(不使用 Composer 或 Drush)
你也可以参考这篇手动更新 Drupal 的文章:
https://drupalbook.org/ru/drupal/122-obnovlenie-drupal-8-bez-drush-i-bez-composer
官方更新说明请参考:
https://www.drupal.org/node/1494290
不过官方建议“删除所有旧文件”的方式存在一定风险,因为有些第三方模块(如 Drupal Commerce)可能依赖自定义的库文件。
更新前准备:
1. 在更新 Drupal 或模块前,务必先备份整个网站和数据库。
你可以使用 Adminer 导出数据库,参考教程:
https://drupalbook.org/ru/drupal/15-vybor-hostinga-pokupka-domennogo-imeni-perenos-sayta-na-hosting
2. 下载最新版 Drupal 8.x 或模块对应的更新包。
3. 将压缩包单独解压到本地,检查 vendor
文件夹中是否包含全部依赖库。如果有缺失的 PHP 库,可以手动复制或通过 Composer 安装。例如在安装 Drupal Commerce 时,vendor
目录中会包含额外的库:
在更新前务必再次确认已备份网站。
一般情况下,如果只是从 8.0.1 升级到 8.0.5,可以直接覆盖文件;但若跨大版本更新(如 8.0.x → 8.1.x),建议谨慎操作,因为结构可能发生变化。
4. 启用维护模式
路径:
/admin/config/development/maintenance
开启维护模式后,用户将无法访问网站,防止更新时出现错误。更新完成后别忘了关闭维护模式。
5. 删除旧文件
删除除以下目录外的所有文件:/sites、/themes、/modules。
这三者分别包含:
- /sites — 网站内容、配置和上传文件;
- /themes — 自定义主题;
- /modules — 额外模块。
⚠️ 删除前请三次确认已备份!删除后网站将暂时无法访问。
如果通过 FTP 上传新文件且网速较慢,整个过程可能需要 1 小时以上。建议使用 SSH 或在本地环境(如 OpenServer)中完成更新。
6. 上传新版本文件
将新版本 Drupal 的所有文件复制到服务器(除 /sites
、/themes
、/modules
目录)。
如果服务器支持 SSH,可直接上传压缩包并通过命令解压:
针对 .tar.gz
文件:
tar -xvzf archive.tar.gz
针对 .zip
文件:
unzip archive.zip
推荐使用 WinSCP,可在其界面直接执行解压命令:
https://winscp.net/eng/docs/lang:ru
自定义命令文档:
https://winscp.net/eng/docs/custom_commands
你还可以使用 7Zip 创建自解压 .tar.gz
压缩包,将 Drupal 核心文件直接打包,上传后在服务器端一键解压。
7. 检查 settings.php
如果更新后提示错误,可以手动修改 settings.php
文件。详细信息可在系统状态页查看:
/admin/reports/status
8. 恢复自定义修改
将之前在 .htaccess
和 robots.txt
文件中的自定义内容重新添加。
9. 恢复网站图标
如果使用了自定义 favicon.ico
,请重新上传。
10. 登录并运行数据库更新
以管理员身份登录,然后访问:
https://example.com/update.php
11. 关闭维护模式
路径:/admin/config/development/maintenance
如果你的网站处于生产环境,请勿直接在生产服务器上实验更新。建议先在本地环境(如 OpenServer)建立副本,确保更新过程无错误后再应用到正式网站。
若在更新过程中遇到错误,请留言讨论,我们会一起分析解决。