更新
更新 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/tags
、flarum/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-5。
- 在
composer.json
文件中,将所有原生扩展(flarum/tags
、flarum/mentions
、flarum/likes
等)的版本控制从^0.1.0
改成通配符*
。 - 在
composer.json
文件中,将flarum/core
的版本控制从^0.1.0
改成^1.0
。 - 在
composer.json
文件中,删除"minimum-stability": "beta",
这行内容。 - 执行上述步骤 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 info
和 composer why-not flarum/core 要更新到的版本号
这两个命令的控制台输出。
#
更新后出错如果您在更新后无法访问论坛,请按照 [故障排查][troubleshooting instructions](/zh/troubleshoot) 进一步操作。