第29章 Flarum 控制台命令
=> 350
>>> User::find(1)->username;
=> "admin"
>>> Discussion::count();
=> 467
读取并修改配置: >>> $settings->get('forum_title');
=> "My Forum"
>>> $settings->set('forum_title', 'My Renamed Forum');
=> null
检查哪些扩展已启用: >>> count($extensions->getEnabledExtensions());
=> 12
>>> $extensions->isEnabled('flarum-tags');
=> true
对数据库执行原生查询: >>> $db->table('users')->where('is_email_confirmed', false)->count();
=> 6
从容器中解析任意服务: >>> resolve(Flarum\Http\UrlGenerator::class)->to('forum')->base();
=> "https://my-forum.example.com"
输入 exit(或按 Ctrl+D)退出 shell。 运行单个表达式 若不想进入交互式 shell,只想执行一段代码——这在脚本或快速单行命令中非常实用——可通过 --execute(-e)选项传入表达式。执行后,结果将被打印,随后命令退出: $ php flarum tinker --execute "User::count()"
=> 350
$ php flarum tinker -e "\$settings->get('forum_title')"
=> "My Forum"
以这种方式运行时,集合会以紧凑形式输出(例如 Collection {#123})。若需查看其内容,可追加 ->all() 或 ->toArray(): $ php flarum tinker -e "Group::pluck('name_singular', 'id')->all()"
如果代码抛出异常,错误信息会被打印出来,命令会以非零状态码退出,因此可以安全地在脚本中使用。
cache:clearphp flarum cache:clear
清除 Flarum 后端缓存,包括生成的 js/css、文本格式化缓存和已缓存的翻译。安装或卸载扩展后应运行此命令;遇到问题时,运行它也应该是排查的第一步。
assets:publishphp flarum assets:publish
发布核心和扩展的静态资源(如编译后的 JS/CSS、bootstrap 图标、logo 等)。当你的资源文件损坏,或者你更换了 flarum-assets 磁盘的文件系统驱动时,这个命令会很有用。
migratephp flarum migrate
执行所有未运行的数据库迁移。当新增或更新了会修改数据库的扩展时,应使用此命令。
如果你的 Flarum 部署在共享同一数据库的多台服务器或容器上,部署期间可能有多个实例同时尝试执行迁移,导致除一个之外的所有实例都失败。为避免这种情况,可以传入 --isolated 选项:此时该命令只有在没有其他实例正在运行时才会执行,否则会直接正常退出。前提是所有实例都连接同一个中央缓存服务器。
php flarum migrate --isolated
migrate:reset
php flarum migrate:reset --extension [extension_id]
重置某个扩展的所有迁移。这主要是扩展开发者的操作,但偶尔你卸载扩展、想从数据库中清除其全部数据时,也可能需要运行它。注意:目标扩展必须处于已安装状态(不一定要启用),此命令才能生效。
schedule:runphp flarum schedule:run
很多扩展会使用定时任务来周期性地执行操作,例如数据库清理、发布定时草稿、生成站点地图等。如果你的扩展用到了定时任务,应当添加一个 cron 任务来定期运行此命令:
* * * * * cd /path-to-your-flarum-install && php flarum schedule:run >> /dev/null 2>&1