logo

Palette - 让它色彩缤纷🎨

Palette — 可视化页面构建器,无需专业设计背景。

在线演示 下载 Palette

滚动

1.2.2. 在没有 Drush 和 Composer 的情况下更新 Drupal 8

16/10/2025, by Ivan

如果你是从官方网站 https://www.drupal.org/project/drupal 下载并安装 Drupal 的,

那么在更新 Drupal 时可能会遇到问题,因为 Drush 和 Composer 无法以常规方式更新此类型的安装。因此,你需要通过手动替换文件来更新 Drupal,或者重组项目结构以便 Composer 可以管理它。在本文中,我们将讨论第一种方法 —— 如何在没有 Drush 和 Composer 的情况下更新 Drupal。

drupal

在更新之前,必须进行完整的网站备份。请复制所有文件和数据库。虽然更新过程中出错的几率很小,但恢复网站可能会花费很多时间,因此提前备份是非常必要的。

如果你的网站已经上线,并且停机会影响公司或客户的销售,那么建议先创建网站副本,在副本上测试更新。确认成功后,再将相同的步骤应用到正式网站上,或者用本地更新完成的版本替换生产环境网站。

在更新过程中,请记录所有操作、错误提示和系统消息,以便后续重现步骤或排查问题。

请勿通过 FTP 在远程服务器上更新 Drupal 8,这样会非常耗时。如果你有 SSH 访问权限,可以使用 wget 命令直接在服务器上下载更新包,这样速度会快得多。

备份完成后,就可以开始更新 Drupal 了:

1. 使用管理员账户登录网站

确保此管理员拥有通过 update.php 更新数据库的权限,并能启用维护模式。

2. 启用维护模式:

路径:

/admin/config/development/maintenance

导航:
配置 → 开发 → 维护模式

drupal

3. 删除旧版本核心文件

从网站根目录中删除 core 和 vendor 文件夹:

drupal update

删除这些文件夹后,网站将暂时无法访问,这是正常现象。

4. 备份和保存自定义文件修改

如果你修改过 .htaccess 或 robots.txt 文件,请先保存修改内容,因为这些文件也需要更新。

同样,如果你通过 Composer 安装过模块或库,请保存 composer.json 的改动,以便稍后重新安装。如果改动较多,可以保留旧的 composer.json 和 composer.lock 文件。

drupal update

5. 检查 settings 文件

有时更新会修改 default.settings.php,你需要将其中的更改同步到你的网站 settings.php 文件中。可以在 Drupal 项目页面的 “View all releases” 查看对应版本的更改:

https://www.drupal.org/project/drupal

drupal update

通常如果只是小版本更新(例如 8.5.x → 8.5.y),可以忽略此步骤。

6. 下载最新的 Drupal 核心

前往官方网站下载最新版本:

https://www.drupal.org/project/drupal

从新版本中复制 core、vendor 文件夹以及网站根目录下的所有文件。

Drupal update

然后将这些文件上传到你的网站目录中。

7. 通过 SSH 更新(推荐)

如果有 SSH 访问权限,可以使用以下命令快速下载并解压 Drupal:

wget https://www.drupal.org/files/projects/drupal-x.y.z.tar.gz
tar -zxvf drupal-x.y.z.tar.gz

然后复制新文件到网站目录:

cp -R drupal-x.y.z/* drupal-x.y.z/.htaccess /path/to/your/installation

如果只能使用 FTP,建议使用 FileZilla,并设置 10 个并行传输线程以提高速度:

drupal files

8. 恢复自定义文件

上传完成后,将修改内容恢复到以下文件中:
robots.txt、.htaccess、default.settings.php、settings.php、composer.json。

9. 运行数据库更新脚本

在 settings.php 文件中添加:

$settings['update_free_access'] = TRUE;

然后访问 /update.php 运行数据库更新。

update.php

10. 验证 Drupal 版本

访问 /admin/reports/status 检查版本状态:

Drupal status

11. 关闭维护模式

路径:/admin/config/development/maintenance

Drupal maintenance mode

12. 禁用 update.php 访问

更新完成后,将设置改回:

$settings['update_free_access'] = FALSE;

如果在更新过程中出现任何问题或错误,请在评论中留言。