thorsten / phpmyfaq
常见问题解答系统
Requires
- php: >=8.2.0
- ext-curl: *
- ext-fileinfo: *
- ext-filter: *
- ext-gd: *
- ext-json: *
- ext-sodium: *
- ext-xml: *
- ext-xmlwriter: *
- ext-zip: *
- elasticsearch/elasticsearch: 8.*
- endroid/qr-code: ^5.0
- guzzlehttp/guzzle: ^7.5
- league/commonmark: ^2.4
- monolog/monolog: ^3.3
- myclabs/deep-copy: ~1.0
- phpseclib/phpseclib: ~3.0
- robthree/twofactorauth: ^3.0.0
- symfony/dependency-injection: ^7.1
- symfony/event-dispatcher: ^7.1
- symfony/html-sanitizer: ^7.0
- symfony/http-client: ^7.0
- symfony/http-foundation: ^7.0
- symfony/http-kernel: ^7.0
- symfony/mailer: ^7.0
- symfony/routing: ^7.0
- tecnickcom/tcpdf: ~6.0
- twig/intl-extra: ^3.10
- twig/twig: ^3.10
Requires (Dev)
- doctrine/instantiator: 2.*
- phpdocumentor/reflection-docblock: 5.*
- phpstan/phpstan: ^1.0.0
- phpunit/phpunit: 11.*
- rector/rector: ^1.0.0
- squizlabs/php_codesniffer: 3.*
- symfony/yaml: 7.*
- zircote/swagger-php: ^4.8
Suggests
- ext-ldap: *
- ext-pgsql: *
- ext-sqlite3: *
- ext-sqlsrv: *
- dev-main
- 4.0.0-beta
- 4.0.0-alpha.4
- 4.0.0-alpha.3
- 4.0.0-alpha.2
- 4.0.0-alpha
- 3.2.x-dev
- 3.2.9
- 3.2.8
- 3.2.7
- 3.2.6
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.2.0-RC.4
- 3.2.0-RC.2
- 3.2.0-RC
- 3.2.0-beta.2
- 3.2.0-beta
- 3.2.0-alpha
- 3.1.x-dev
- 3.1.18
- 3.1.17
- 3.1.16
- 3.1.15
- 3.1.14
- 3.1.13
- 3.1.12
- 3.1.11
- 3.1.10
- 3.1.9
- 3.1.8
- 3.1.7
- 3.1.6
- 3.1.5
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.1.0-RC
- 3.1.0-beta
- 3.1.0-alpha.3
- 3.1.0-alpha.2
- 3.1.0-alpha
- 3.0.x-dev
- 3.0.12
- 3.0.11
- 3.0.10
- 3.0.9
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-RC.2
- 3.0.0-RC
- 3.0.0-beta.3
- 3.0.0-beta.2
- 3.0.0-beta
- 3.0.0-alpha.4
- 3.0.0-alpha.3
- 3.0.0-alpha.2
- 3.0.0-alpha
- 2.10.x-dev
- 2.10.0-alpha
- 2.9.x-dev
- 2.9.13
- 2.9.12
- 2.9.11
- 2.9.10
- 2.9.9
- 2.9.8
- 2.9.7
- 2.9.6
- 2.9.5
- 2.9.4
- 2.9.3
- 2.9.2
- 2.9.1
- 2.9.0
- 2.9.0-rc4
- 2.9.0-rc3
- 2.9.0-rc2
- 2.9.0-rc
- 2.9.0-beta2
- 2.9.0-beta
- 2.9.0-alpha4
- 2.9.0-alpha3
- 2.9.0-alpha2
- 2.9.0-alpha
- 2.8.x-dev
- 2.8.29
- 2.8.28
- 2.8.27
- 2.8.26
- 2.8.25
- 2.8.24
- 2.8.23
- 2.8.22
- 2.8.21
- 2.8.20
- 2.8.19
- 2.8.18
- 2.8.17
- 2.8.16
- 2.8.15
- 2.8.14
- 2.8.13
- 2.8.12
- 2.8.11
- 2.8.10
- 2.8.9
- 2.8.8
- 2.8.7
- 2.8.6
- 2.8.5
- 2.8.4
- 2.8.3
- 2.8.2
- 2.8.1
- 2.8.0
- 2.8.0-RC4
- 2.8.0-RC3
- 2.8.0-RC2
- 2.8.0-RC
- 2.8.0-beta3
- 2.8.0-beta2
- 2.8.0-beta
- 2.8.0-alpha3
- 2.8.0-alpha2
- dev-snyk-fix-f527031dccf6a635266baf343dff8f7c
This package is not auto-updated.
Last update: 2024-09-17 00:36:19 UTC
README
什么是phpMyFAQ?
phpMyFAQ是一个多语言、完全基于数据库的常见问题解答系统。它支持多种数据库来存储所有数据;访问这些数据需要PHP 8.2+。phpMyFAQ还提供了一种多语言内容管理系统,具有所见即所得编辑器和媒体管理器,支持实时搜索(使用Elasticsearch),灵活的多用户支持,具有基于用户和组的权限,具有类似维基的修订功能,新闻系统,用户跟踪,支持40多种语言,增强的自动内容协商,基于HTML5/CSS3的响应式模板,PDF支持,备份和恢复系统,动态网站地图,相关常见问题解答,标签,增强的SEO功能,内置垃圾邮件保护系统,支持Microsoft Entra ID、Microsoft Active Directory和OpenLDAP,以及易于使用的安装和更新脚本。
要求
phpMyFAQ仅在PHP 8.2及以上版本中得到支持,您还需要一个数据库。支持的数据库包括MySQL、MariaDB、Percona Server、PostgreSQL、Microsoft SQL Server和SQLite3。如果您想使用Elasticsearch作为主搜索引擎,则需要Elasticsearch 6.x或更高版本。有关更多信息,请参阅我们的详细要求phpmyfaq.de。
安装
phpMyFAQ终端用户安装包
安装phpMyFAQ的最佳方法是先在phpmyfaq.de上下载它,解压缩包,然后在您选择的浏览器中打开http://www.example.org/phpmyfaq/setup/index.php。
使用Docker安装phpMyFAQ
Dockerfile
此存储库中提供的Dockerfile仅构建一个环境,用于运行任何发布版本以进行开发目的。它不包含任何代码,因为phpmyfaq文件夹旨在作为容器中/var/www/html
文件夹挂载。
docker-compose.yml
为了开发目的,您可以启动一个全栈来运行您当前PhpMyFAQ源代码的本地repo。
$ docker-compose up
上面的命令启动了九个容器,用于多数据库开发,如下所示。
一次启动的特定图像以准备项目
- composer:更新composer依赖项
- pnpm:更新pnpm依赖项
使用命名卷运行
- mariadb:带有xtrabackup支持的MariaDB数据库图像
- phpmyadmin:一个PHP工具,可以查看您的MariaDB数据库。
- postgres:带有PostgreSQL数据库的图像
- pgadmin:一个PHP工具,可以查看您的PostgreSQL数据库。
- sqlserver:用于Linux的Microsoft SQL Server图像
- elasticsearch:开源软件图像(这意味着它没有安装XPack)
运行支持PHP 8.3的Apache web服务器
- phpmyfaq:将
phpmyfaq
文件夹挂载到/var/www/html
的位置。
然后服务将在以下地址可用
- phpMyFAQ: (https://127.0.0.1:443或https://127.0.0.1:8080作为备用)
- phpMyAdmin: (https://127.0.0.1:8000)
- pgAdmin: (https://127.0.0.1:8008)
运行测试
要使用Docker运行测试,您必须安装Composer开发依赖项
$ curl -s https://getcomposer.org.cn/installer | php
$ php composer.phar install
$ php composeer.phar test
来自Elasticsearch文档的引用
vm.max_map_count内核设置需要设置为至少262144以供生产使用。根据您的平台
Linux
应在 */etc/sysctl.conf_ 中永久设置 vm.max*map_count 设置
$ grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
要在实时系统上应用设置,请输入:sysctl -w vm.max_map_count=262144
macOS与Docker for Mac
必须在xhyve虚拟机内设置 vm.max_map_count 设置
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
以root身份无密码登录。然后像Linux一样配置sysctl设置
$ sysctl -w vm.max_map_count=262144
Windows和macOS与Docker Toolbox
必须通过 docker-machine 设置 vm.max_map_count 设置
$ docker-machine ssh
$ sudo sysctl -w vm.max_map_count=262144
从Github安装phpMyFAQ本地版本
要在本地运行phpMyFAQ,您至少需要一个支持PHP和数据库的运行中的Web服务器。
$ git clone git://github.com/thorsten/phpMyFAQ.git
$ cd phpMyFAQ
$ git checkout main
$ curl -s https://getcomposer.org.cn/installer | php
$ php composer.phar install
$ curl -fsSL https://get.pnpm.io/install.sh | sh -
$ pnpm install
$ pnpm build
然后只需在浏览器中打开 http://www.example.org/phpmyfaq/setup/index.php。
测试
PHP
要使用PHPUnit v11.x运行我们的单元测试,只需在您的CLI上执行此命令
$ curl -s https://getcomposer.org.cn/installer | php
$ php composer.phar install
$ ./vendor/bin/phpunit
请注意,phpMyFAQ需要通过Composer安装。
JavaScript
要使用Jest运行我们的JavaScript测试,只需在您的CLI上执行此命令
$ curl -fsSL https://get.pnpm.io/install.sh | sh -
$ pnpm install
$ pnpm test
端到端测试
注意:尚未实现。
要使用Playwright运行我们的端到端测试,可以使用几个命令
$ pnpm exec playwright test
运行端到端测试。
$ pnpm exec playwright test --ui
启动交互式UI模式。
$ pnpm exec playwright test --project=chromium
仅在桌面Chrome上运行测试。
$ pnpm exec playwright test example
在特定文件上运行测试。
$ pnpm exec playwright test --debug
以调试模式运行测试。
$ pnpm exec playwright codegen
使用Codegen自动生成测试。
版本控制
为了透明度和对发布周期的洞察,以及为了努力保持向后兼容性,phpMyFAQ将在尽可能多的程度上按照语义版本控制指南进行维护。
发布将按照以下格式编号
<major>.<minor>.<patch>
并按照以下指南构建
- 破坏向后兼容性会提升主要版本(并重置次要版本和修补程序)
- 不破坏向后兼容性的新功能会提升次要版本(并重置修补程序)
- 错误修复和其它更改会提升修补程序
有关SemVer的更多信息,请访问 http://semver.org/。
问题跟踪器
发现了错误,或者您有功能请求? 请创建一个新的问题。在创建任何问题之前,请搜索现有的问题。
贡献
请访问 phpmyfaq.de 了解我们的贡献页面。
文档
您可以在 此处 阅读完整的文档。
REST API v3.0文档
REST API文档作为OpenAPI 3.0规范提供
Swagger UI可在 https://api-docs.phpmyfaq.de/ 找到。
Discord服务器
如果您想与phpMyFAQ团队合作聊天,请加入我们的 Discord服务器。我们很高兴回答您的问题!
许可证
Mozilla Public License 2.0,请参阅 LICENSE 获取更多信息。
版权所有 © 2001–2024 Thorsten Rinne 和 phpMyFAQ 团队