PHPackages                             branchzero/discuz-flarum-adapter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. branchzero/discuz-flarum-adapter

ActiveLibrary[Framework](/categories/framework)

branchzero/discuz-flarum-adapter
================================

Used To Quickly Generate Backend Skeleton based on Laravel/Lumen

19123[2 issues](https://github.com/branchzero/discuz-flarum-adapter/issues)PHP

Since Dec 3Pushed 7y ago1 watchersCompare

[ Source](https://github.com/branchzero/discuz-flarum-adapter)[ Packagist](https://packagist.org/packages/branchzero/discuz-flarum-adapter)[ RSS](/packages/branchzero-discuz-flarum-adapter/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Discuz To Flarum Migrate Adapter
================================

[](#discuz-to-flarum-migrate-adapter)

本项目参考了如下项目，对此表示感谢

- [https://github.com/MichaelBelgium/mybb\_to\_flarum](https://github.com/MichaelBelgium/mybb_to_flarum)

该项目的目的是为了将 Discuz 迁移到 Flarum 中

前言
==

[](#前言)

- **代码写的稀烂,只为了达到转换数据的目的**
- **大数据量用户慎用这个工具**
- **工具不接受任何issue,也没有精力去修复其中的一些问题,有问题直接提PR**
- 不建议一点都没有代码基础的兄弟用这个工具，可能你转换的时候还需要自己动手改一部分代码才能正常跑起来。
- 建议基于 FlarumChina 的版本来动手吧，原版有些地方中文化还是不太到位的
- 执行migrate.php前保证discussions和flagrow\_files表是空的（truncate无效，因为有外键）
- 用命令行跑migrate.php，以避免超时问题，跑完记得删migrate.php和migrate\_config.php文件避免留下安全隐患
- 跑之前记得先把posts表的content字段改成mediumtext，否则转html之后可能存不下，然后报错
- mysql 5.7记得给discussions的title字段加FULLTEXT索引，然后把posts表转成innodb(官方dev-master版最近已动，在release之前先手动改吧！)，要不然数据量上去搜索巨慢无比，虽然加了也是巨慢无比，这个最终的解决方案可能还是得上ElasticSearch

Step 0（前期准备）
============

[](#step-0前期准备)

- composer require branchzero/discuz-flarum-adapter
- composer require flagrow/upload(以兼容 Discuz 附件迁移)
- composer require jellybool/flarum-ext-slug(板块生成slug)

Step 1 （迁移数据）
=============

[](#step-1-迁移数据)

- 挪migrate.php和migrate\_config.php至站点根目录，配置migrate\_config.php并执行

Step 2（支持中文用户名和中文提及）
====================

[](#step-2支持中文用户名和中文提及)

- 加密算法兼容性修正（以后更新每次都要做）
    - 找到 vendor/flarum/core/src/Foundation/AbstractServer.php
    - 搜索 $app-&gt;register('Illuminate\\Hashing\\HashServiceProvider');
    - 替换成 $app-&gt;register('Branchzero\\DiscuzFlarumAdapter\\Hashing\\HashServiceProvider');

执行以下命令

```
sed -i "s#a-z0-9_-#-_a-z0-9\\x7f-\\xff#" \
    vendor/flarum/core/src/Core/Validator/UserValidator.php

sed -i "s#a-z0-9_-#-_a-zA-Z0-9\\x7f-\\xff#" \
    vendor/flarum/flarum-ext-mentions/src/Listener/FormatPostMentions.php \
    vendor/flarum/flarum-ext-mentions/src/Listener/FormatUserMentions.php

sed -i "s#getIdForUsername(#getIdForUsername(rawurlencode(#; /getIdForUsername/s/'))/')))/" \
    vendor/flarum/flarum-ext-mentions/src/Listener/FormatUserMentions.php

```

支持中文搜索

找到 vendor/flarum/core/src/Core/Search/Discussion/Fulltext/MySqlFulltextDriver.php

修改 match 方法为

```
    public function match($string)
    {
        $discussionIds = Discussion::whereRaw("is_approved = 1")
            ->where('title', 'like', '%'.$string.'%')
            ->orderBy('id', 'desc')
            ->limit(50)
            ->lists('id','start_post_id');
        $relevantPostIds = [];
        foreach ($discussionIds as $postId => $discussionId) {
            $relevantPostIds[$discussionId][] = $postId;
        }
        $discussionIds = Post::whereRaw("is_approved = 1")
            ->where('content', 'like', '%'.$string.'%')
            ->orderBy('id', 'desc')
            ->limit(50)
            ->lists('discussion_id', 'id');
        foreach ($discussionIds as $postId => $discussionId) {
            $relevantPostIds[$discussionId][] = $postId;
        }
        return $relevantPostIds;
    }

```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/bdcdd48a03a7306582ff6f487f424cf9cf7932fe5c2cab10ea3f1494d583439f?d=identicon)[branchzero](/maintainers/branchzero)

---

Top Contributors

[![branchzero](https://avatars.githubusercontent.com/u/7685609?v=4)](https://github.com/branchzero "branchzero (2 commits)")

### Embed Badge

![Health badge](/badges/branchzero-discuz-flarum-adapter/health.svg)

```
[![Health](https://phpackages.com/badges/branchzero-discuz-flarum-adapter/health.svg)](https://phpackages.com/packages/branchzero-discuz-flarum-adapter)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
