{"id":14966512,"url":"https://github.com/liufee/cms","last_synced_at":"2025-11-12T21:38:31.111Z","repository":{"id":41100408,"uuid":"63144033","full_name":"liufee/cms","owner":"liufee","description":"Feehi CMS based on yii2","archived":false,"fork":false,"pushed_at":"2022-10-17T01:52:19.000Z","size":14636,"stargazers_count":534,"open_issues_count":16,"forks_count":179,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-11-12T21:38:24.558Z","etag":null,"topics":["php","phpcms","swoole","swoole-cms","yii","yii2","yii2-swoole","yii2cms","yiicms"],"latest_commit_sha":null,"homepage":"http://demo.cms.feehi.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liufee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2016-07-12T09:15:52.000Z","updated_at":"2025-10-26T17:46:58.000Z","dependencies_parsed_at":"2022-08-28T09:00:25.104Z","dependency_job_id":null,"html_url":"https://github.com/liufee/cms","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/liufee/cms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liufee%2Fcms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liufee%2Fcms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liufee%2Fcms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liufee%2Fcms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liufee","download_url":"https://codeload.github.com/liufee/cms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liufee%2Fcms/sbom","scorecard":{"id":593411,"data":{"date":"2025-08-11","repo":{"name":"github.com/liufee/cms","commit":"0954945c7eb64a90f1bdc3c31c2f7f7f7fb4ba10"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: backend/web/static/js/plugins/ueditor/third-party/snapscreen/UEditorSnapscreen.exe:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:4","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T22:32:03.936Z","repository_id":41100408,"created_at":"2025-08-20T22:32:03.936Z","updated_at":"2025-08-20T22:32:03.936Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284115869,"owners_count":26949957,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-12T02:00:06.336Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","phpcms","swoole","swoole-cms","yii","yii2","yii2-swoole","yii2cms","yiicms"],"created_at":"2024-09-24T13:36:30.672Z","updated_at":"2025-11-12T21:38:31.096Z","avatar_url":"https://github.com/liufee.png","language":"PHP","readme":"FeehiCMS  __[(English)](docs/running_screenshot/README_EN.md)__  首款编写单元测试、功能测试、验收测试的yii2开源系统\n===============================\n\n基于yii2的CMS系统，运行环境与yii2(php\u003e=5.4)一致。FeehiCMS旨在为yii2爱好者提供一个基础功能稳定完善的系统，使开发者更专注于业务功能开发。\nFeehiCMS没有对yii2做任何的修改、封装，但是把yii2的一些优秀特性几乎都用在了FeehiCMS上，虽提供文档，\n但FeehiCMS提倡简洁、快速上手，基于FeehiCMS开发可以无需文档，反倒FeehiCMS为yii2文档提供了最好的实例\n\n[![Latest Stable Version](https://poser.pugx.org/feehi/cms/v/stable)](https://packagist.org/packages/feehi/cms)\n[![License](https://poser.pugx.org/feehi/cms/license)](https://packagist.org/packages/feehi/cms)\n[![Build Status](https://www.travis-ci.org/liufee/cms.svg?branch=master)](https://www.travis-ci.org/liufee/cms)\n\n\n演示站点\n-------\n演示站点后台   **用户名:feehicms 密码123456**\n* 后台 [http://demo.cms.feehi.com/admin](http://demo.cms.feehi.com/admin)\n* 前台 [http://demo.cms.feehi.com](http://demo.cms.feehi.com/)\n* api [http://demo.cms.feehi.com/api/articles](http://demo.cms.feehi.com/api/articles)\n\n\n[更新记录](docs/UPGRADING.md)\n-------\n\n\n帮助\n---------------\n1. 开发文档[http://doc.feehi.com](http://doc.feehi.com)\n\n2. QQ群 936448696\n\n3. 微信 \u003cbr\u003e ![微信](http://img-1251086492.cosgz.myqcloud.com/github/wechat-wfeeliu.png)\n\n4. Email job@feehi.com\n\n5. [bug反馈](http://www.github.com/liufee/cms/issues)\n\n\n功能\n---------------\n * 多语言\n * 单元测试\n * 功能测试\n * 验收测试\n * RBAC权限管理\n * restful api\n * 文章管理 \n * 操作日志\n * 适配手机\n \n FeehiCMS提供完备的web系统基础通用功能，包括前后台菜单管理,文章标签,广告,banner,缓存,网站设置,seo设置,邮件设置,分类管理,单页...\n \n \n使用Docker\n-------\n1.下载镜像\n```bash\n    $ docker pull registry.cn-hangzhou.aliyuncs.com/feehi/cms #FQ后建议直接使用docker pull feehi/cms\n```\n    \n2.创建容器\n```bash\n    $ docker run --name feehicms -h feehicms -itd -v /path/to/data:/data -e DBDSN=sqlite:/data/feehi.db -e TablePrefix=feehi_ -e AdminUsername=admin -e AdminPassword=123456 -p 8080:80 feehi/cms\n```\n以上命令将会自动初始化FeehiCMS，并导入数据库(默认数据库为sqlite)  \n如果需要更使用其他数据库，比如mysql，执行:  \n```bash\n    $ docker run --name feehicms -h feehicms -itd -e DBDSN=mysql:host=mysql-ip;dbname=feehi -e DBUser=dbuser -e DBPassword=dbpassword -e TablePrefix=feehi_ -e AdminUsername=admin -e AdminPassword=123456 -p 8080:80 feehi/cms\n```\n如果需要使用postgresql则将DBDSN改为pgsql:host=pgsql-ip  \n  \n也可以仅初始化FeehiCMS，然后通过web在线安装 \n```bash\n    $ docker run --name feehicms -h feehicms -itd -p 8080:80 feehi/cms -o start\n```\n然后访问http://ip:port/install.php，根据提示选择数据库类型，填写数据库用户名、数据库密码、后台管理员用户名、密码完成安装。  \n  \n  \n以上方式启动的容器只能用作开发环境，容器启动命令最终调用为php -S 0.0.0.0:80,如果用作production，可以执行\n```bash\n    $ docker run --name feehicms -h feehicms -itd -p 8080:80 feehi/cms -m start\n```\n容器将启动php-fpm，并监听9000端口，配合nginx使用。nginx配置大致为\n```bash\n    location ~ \\.php$ {\n        ...\n        fastcgi_pass fpm-ip:9000;\n        fastcgi_param  SCRIPT_FILENAME  /usr/local/feehicms/frontend/web$fastcgi_script_name;\n        ...\n    }\n```\n**因为yii2会生成js/css，以及新上传的文件（图片）需要nginx webroot使用php fpm容器同一个文件夹:/usr/local/feehicms/frontend/web**\n\n\n安装\n---------------\n前置条件: 如未特别说明，本文档已默认您把php命令加入了环境变量，如果您未把php加入环境变量，请把以下命令中的php替换成/path/to/php\n\u003e 无论是使用归档文件还是composer，都有相应阶段让您填入后台管理用户名、密码\n1. 使用归档文件(简单，适合没有yii2经验者)\n    1. 下载FeehiCMS源码 [点击此处下载最新版](http://resource-1251086492.cossh.myqcloud.com/Feehi_CMS.zip)\n    2. 解压到目录 \n    3. 配置web服务器[web服务器配置](docs/WEBSERVER_CONFIG.md)\n    4. 浏览器打开 http://localhost/install.php 按照提示完成安装(若使用php内置web服务a器则地址为 http://localhost:8080/install.php )\n    5. 完成\n    \n2. 使用composer (`推荐使用此方式安装`) \n     \u003ecomposer的安装以及国内镜像设置请点击 [此处](https://developer.aliyun.com/composer)\n     \n     \u003e以下命令默认您已全局安装composer，如果您是局部安装的composer:请使用php /path/to/composer.phar来替换以下命令中的composer\n     \n     1. 使用composer创建FeehiCMS项目\n        \n        ```bash\n            $ composer create-project feehi/cms webApp //此命令创建的FeehiCMS项目不能平滑升级新版本(目录结构简单,目前主力维护版本)\n        ```\n     2. 依次执行以下命令初始化yii2框架以及导入数据库\n         ```bash\n         $ cd webApp\n         $ php ./init --env=Development #初始化yii2框架，线上环境请使用--env=Production\n         $ php ./yii migrate/up --interactive=0 #导入FeehiCMS sql数据库，执行此步骤之前请先到common/config/main-local.php修改成正确的数据库配置\n         ```\n     3. 配置web服务器[web服务器配置](docs/WEBSERVER_CONFIG.md)\n     4. 完成\n \n \n \n运行测试\n-------\n1. 仅运行单元测试,功能测试(不需要配置web服务器)\n ```bash\n    cd /path/to/webApp\n    vendor/bin/codecept run\n ```\n2. 运行单元测试,功能测试,验收测试(需要配置完web服务器)\n    1. 分别拷贝backend,frontend,api三个目录下的tests/acceptance.suite.yml.example到各自目录，并均重名为acceptance.suite.yml,且均修改里面的url为各自的访问url地址\n    2. 与上(仅运行单元测试,功能测试)命令一致\n\n\n项目展示\n------------\n* [山东城市服务技师学院](http://www.sdcc.edu.cn/)   \n* [优悦娱乐网](http://www.qqyouyue.com/)  \n* [吉安市食品药品监督管理局](http://www.jamsda.gov.cn/)  \n* [完美娱乐](http://www.qqwanmei.com/)  \n* [房产网](http://www.itufang.cn/)\n* [中丞法拍网](http://www.fapaihouse.com/)  \n* [51前途网](http://www.51uit.com/) \n* [用友财务软件](http://www.myyonyou.cn/) \n*  ......\n\n\n[运行效果](docs/running_screenshot)\n---------\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliufee%2Fcms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliufee%2Fcms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliufee%2Fcms/lists"}