跳到主要内容

更新

更新 Flarum 需要用到 Composer。要了解 Composer 的相关内容,请阅读 Composer 指南,我们对 Composer 进行了简单的介绍。Composer 是用来安装 Flarum、管理扩展程序的工具,使用并掌握它非常重要。

如果您要进行主版本更新(如从 0.1.0 及以下版本更新到 1.x.x。如从 1.x.x 更新到 2.x.x 以此类推),请在执行通用步骤前务必阅读「主版本更新指南」

通用步骤#

步骤 1: 确保您安装的所有扩展程序,都有与要安装的 Flarum 兼容的版本。只有主版本更新才需满足这个条件(如果从 v1.0.0 升级到 v1.1.0,很可能不需要此条件,当然一切的前提是扩展程序的开发者遵循版本控制规范)。您可以在 发布帖Packagist 仓库,或 Extiverse 数据库查看扩展程序的兼容情况。更新前,您需要卸载(不仅仅是禁用)每一个不兼容的扩展程序。

步骤 2: 检查 composer.json 文件。除非您有特殊需求,请把 flarum/core 以外,所有软件包的版本号设置为 *(包括 flarum/tagsflarum/mentions,以及其他原生扩展)。flarum/core 的版本号应当是 "^1.0.0" 这个范围区间。仅当您需要安装特定版本的 Flarum 时,才需要指定确切的版本号(例如,"flarum/core":"v0.1.0-beta.16")。

步骤 3: 如果您有本地扩展程序,且使用了 本地扩展接口,请确保使用与 Flarum 版本兼容的代码。

步骤 4: 我们建议您在更新前禁用所有第三方扩展程序。此举不是必须的,但能在很大程度上降低出错时的排查复杂度。

步骤 5: 确保当前 PHP 使用 Composer 2 (composer --version 命令查询),且更新的 Flarum 版本支持此 PHP 版本。

步骤 6: 最后,运行更新命令:

composer update --prefer-dist --no-plugins --no-dev -a --with-all-dependenciesphp flarum migratephp flarum cache:clear

步骤 7: 如果成功,请重启 PHP 进程和 opcache。

主版本更新指南#

从测试版 (<=0.1.0) 到稳定版 v1 (^1.0.0)#

  1. 执行上述步骤 1-5。
  2. composer.json 文件中,将所有原生扩展(flarum/tagsflarum/mentionsflarum/likes 等)的版本控制从 ^0.1.0 改成通配符 *
  3. composer.json 文件中,将 flarum/core 的版本控制从 ^0.1.0 改成 ^1.0
  4. composer.json 文件中,删除 "minimum-stability": "beta", 这行内容。
  5. 执行上述步骤 6-7。

报错排查#

更新 Flarum 的过程中,您可能会在执行更新命令时、更新后访问论坛时遇到问题。。

更新时出错#

下面是更新 Flarum 时常见的几种问题。


如果控制台输出很简短,且含有这样的语句:

Nothing to modify in lock file

或在控制台输出中的更新列表里没有看到 flarum/core,然后 Flarum 的版本也不是最新的。

  • 再次执行上述步骤 2,确保所有第三方扩展的版本控制都是通配符星号。
  • 确保 flarum/core 版本控制为范围区间(如 ^1.0.0),而不是定死的特定版本(如 v0.1.0-beta.16)。如果您尝试更新 Flarum 的主版本,请按照前段内容设置核心的版本控制。

如果遇到其他报错,请运行 composer why-not flarum/core 要更新到的版本号,查看无法更新的原因。

如果控制台输出类似这样:

flarum/flarum                     -               requires          flarum/core (v0.1.0-beta.15)fof/moderator-notes               0.4.4           requires          flarum/core (>=0.1.0-beta.15 <0.1.0-beta.16)jordanjay29/flarum-ext-summaries  0.3.2           requires          flarum/core (>=0.1.0-beta.14 <0.1.0-beta.16)flarum/core                       v0.1.0-beta.16  requires          dflydev/fig-cookies (^3.0.0)flarum/flarum                     -               does not require  dflydev/fig-cookies (but v2.0.3 is installed)flarum/core                       v0.1.0-beta.16  requires          franzl/whoops-middleware (^2.0.0)flarum/flarum                     -               does not require  franzl/whoops-middleware (but 0.4.1 is installed)flarum/core                       v0.1.0-beta.16  requires          illuminate/bus (^8.0)flarum/flarum                     -               does not require  illuminate/bus (but v6.20.19 is installed)flarum/core                       v0.1.0-beta.16  requires          illuminate/cache (^8.0)flarum/flarum                     -               does not require  illuminate/cache (but v6.20.19 is installed)flarum/core                       v0.1.0-beta.16  requires          illuminate/config (^8.0)flarum/flarum                     -               does not require  illuminate/config (but v6.20.19 is installed)flarum/core                       v0.1.0-beta.16  requires          illuminate/container (^8.0)flarum/flarum                     -               does not require  illuminate/container (but v6.20.19 is installed)flarum/core                       v0.1.0-beta.16  requires          illuminate/contracts (^8.0)flarum/flarum                     -               does not require  illuminate/contracts (but v6.20.19 is installed)flarum/core                       v0.1.0-beta.16  requires          illuminate/database (^8.0)flarum/flarum                     -               does not require  illuminate/database (but v6.20.19 is installed)flarum/core                       v0.1.0-beta.16  requires          illuminate/events (^8.0)flarum/flarum                     -               does not require  illuminate/events (but v6.20.19 is installed)...(这样的输出可能有很多行)

八成是因为您安装的有些扩展程序,不兼容您要更新的 Flarum 版本。

  • 再次执行步骤 1,确保所有扩展程序都兼容您要更新的 Flarum 版本,如果不兼容,则卸载之。
  • 确保运行更新命令 composer update 时,没有缺少通用步骤中给出的所有附加参数。

如果上面所有办法都不能解决您的问题,请随时联系我们的 支持论坛,发帖时,一定要附上 php flarum infocomposer why-not flarum/core 要更新到的版本号 这两个命令的控制台输出。

更新后出错#

如果您在更新后无法访问论坛,请按照 [故障排查][troubleshooting instructions](/zh/troubleshoot) 进一步操作。