https://github.com/thorsten/phpmyfaq
phpMyFAQ - Open Source FAQ web application for PHP 8.3+ and MySQL, PostgreSQL and other databases
https://github.com/thorsten/phpmyfaq
database docker docker-compose elasticsearch faq frankenphp kubernetes mariadb mcp-server mssql mysql opensearch php phpmyfaq postgresql sqlite
Last synced: 17 days ago
JSON representation
phpMyFAQ - Open Source FAQ web application for PHP 8.3+ and MySQL, PostgreSQL and other databases
- Host: GitHub
- URL: https://github.com/thorsten/phpmyfaq
- Owner: thorsten
- License: mpl-2.0
- Created: 2009-08-04T19:26:15.000Z (over 16 years ago)
- Default Branch: main
- Last Pushed: 2026-02-26T05:01:24.000Z (about 1 month ago)
- Last Synced: 2026-02-26T09:37:16.959Z (about 1 month ago)
- Topics: database, docker, docker-compose, elasticsearch, faq, frankenphp, kubernetes, mariadb, mcp-server, mssql, mysql, opensearch, php, phpmyfaq, postgresql, sqlite
- Language: PHP
- Homepage: https://www.phpmyfaq.de
- Size: 65.3 MB
- Stars: 610
- Watchers: 30
- Forks: 264
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# phpMyFAQ



[](https://phpmyfaq.readthedocs.io/en/latest/?badge=latest)
## What is phpMyFAQ?
phpMyFAQ is a multilingual, AI-ready, and scalable FAQ platform built for modern knowledge management.
Powered by PHP 8.4+ and a fully database-driven architecture, it delivers fast search with Elasticsearch/OpenSearch,
flexible multi-user permissions, and a powerful content management system with revision history and WYSIWYG editing.
With 40+ languages, responsive Twig-based templates, a REST API, 2FA security, enterprise authentication
(LDAP, Active Directory, Entra ID), and a built-in plugin system, phpMyFAQ integrates seamlessly into almost any
environment.
Deploy it on traditional hosting or run it in the cloud via Docker.
## Requirements
phpMyFAQ requires PHP 8.4 or higher and a supported database system.
Supported databases include MySQL, MariaDB, Percona Server, PostgreSQL, Microsoft SQL Server, and SQLite3.
For enhanced search capabilities using Elasticsearch or OpenSearch, Elasticsearch 6.x or later or OpenSearch 1.x or
later is required.
For a complete and up-to-date list of system requirements, please refer to the official documentation at
[phpmyfaq.de](https://www.phpmyfaq.de/requirements).
## Installation
### phpMyFAQ installation package for end-users
The best way to install phpMyFAQ is to download it on [phpmyfaq.de](https://www.phpmyfaq.de/download), unzip the package,
and open http://www.example.org/phpmyfaq/setup/ in your preferred browser.
### phpMyFAQ installation with Docker
#### Dockerfile
The Dockerfile provided in this repo only builds an environment to run any release for development purpose.
It does not contain any code
as the phpmyfaq folder is meant to be mounted as the `/var/www/html` folder in the container.
#### docker-compose.yml
For development purposes, you can start a full stack to run your current PhpMyFAQ source code from your local repo.
$ docker-compose up
The command above starts nine containers for multi-database development as follows.
_Specific images started at once to prepare the project:_
- **composer**: update composer dependencies
- **pnpm**: update pnpm dependencies
_Running using named volumes:_
- **mariadb**: image with MariaDB database with xtrabackup support
- **phpmyadmin**: a PHP tool to have a look at your MariaDB database.
- **postgres**: image with PostgreSQL database
- **pgadmin**: a PHP tool to have a look at your PostgreSQL database.
- **sqlserver**: image with Microsoft SQL Server for Linux
- **elasticsearch**: Open Source Software image (it means it does not have XPack installed)
- **opensearch**: OpenSearch image (it means it does not have XPack installed)
- **redis**: image with a Redis database
_Running apache web server with PHP 8.5 support:_
- **apache**: mounts the `phpmyfaq` folder in place of `/var/www/html`.
_Running nginx web server with PHP 8.5 support:_
- **nginx**: mounts the `phpmyfaq` folder in place of `/var/www/html`.
- **php-fpm**: PHP-FPM image with PHP 8.5 support
_Running FrankenPHP web server with PHP 8.5 support:_
- **frankenphp**: mounts the `phpmyfaq` folder in place of `/var/www/html`.
Then services will be available at the following addresses:
- phpMyFAQ: (https://localhost:443 or http://localhost:8080 as fallback)
- phpMyAdmin: (http://localhost:8000)
- pgAdmin: (http://localhost:8008)
#### Running tests
To run the test using Docker, you have to install the Composer development dependencies
$ docker build -t phpmyfaq-test . && docker run --rm -it docker.io/library/phpmyfaq-test:latest
#### Quote from Elasticsearch documentation
The vm.max_map_count kernel setting needs to be set to at least 262144 for production use. Depending on your platform:
##### Linux
The vm.max*map_count setting should be set permanently in */etc/sysctl.conf\_:
$ grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
To apply the setting on a live system type: `sysctl -w vm.max_map_count=262144`
##### macOS with Docker for Mac
The vm.max_map_count setting must be set within the xhyve virtual machine:
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Log in with root and no password. Then configure the sysctl setting as you would for Linux:
$ sysctl -w vm.max_map_count=262144
##### Windows and macOS with Docker Toolbox
The vm.max_map_count setting must be set via docker-machine:
$ docker-machine ssh
$ sudo sysctl -w vm.max_map_count=262144
### phpMyFAQ local installation from Github
To run phpMyFAQ locally, you need at least a running web server with PHP support and a database.
$ git clone git://github.com/thorsten/phpMyFAQ.git
$ cd phpMyFAQ
$ git checkout main
$ curl -s https://getcomposer.org/installer | php
$ php composer.phar install
$ curl -fsSL https://get.pnpm.io/install.sh | sh -
$ pnpm install
$ pnpm build
Then open http://www.example.org/phpmyfaq/setup/ in your browser.
## Testing
### PHP
To run our unit tests via PHPUnit v12.x, execute this command on your CLI
$ curl -s https://getcomposer.org/installer | php
$ php composer.phar install
$ ./vendor/bin/phpunit
Please note that phpMyFAQ needs to be installed via Composer.
### TypeScript
To run our TypeScript tests via Vitest, execute this command on your CLI
$ curl -fsSL https://get.pnpm.io/install.sh | sh -
$ pnpm install
$ pnpm test
## Versioning
For transparency and insight into our release cycle, and for striving to maintain backward compatibility, phpMyFAQ will
be maintained under the Semantic Versioning guidelines as much as possible.
Releases will be numbered with the following format:
`..`
And constructed with the following guidelines:
- Breaking backward compatibility bumps the major (and resets the minor and patch)
- New additions without breaking backward compatibility bump the minor (and reset the patch)
- Bug fixes and misc changes bump the patch
For more information on SemVer, please visit http://semver.org/.
## Issue tracker
Found a bug, or do you have a feature request? [Please open a new issue](https://github.com/thorsten/phpMyFAQ/issues).
Before opening any issue, please search for existing issues.
## Contributing
Please check out our page about contributing on [phpmyfaq.de](https://www.phpmyfaq.de/contribute).
## Documentation
You can read the complete documentation on [here](https://phpmyfaq.readthedocs.io/en/latest/).
## REST API documentation
The REST API documentation is available as an OpenAPI 3.0 specification:
- [JSON](docs/openapi.json)
- [YAML](docs/openapi.yaml)
The Swagger UI is available at [https://api-docs.phpmyfaq.de/](https://api-docs.phpmyfaq.de/).
## Discord server
If you like to chat with the phpMyFAQ team, please join our [Discord server](https://discord.gg/wszhTceuNM).
We're happy to help you with your questions!
## License
Mozilla Public License 2.0, see LICENSE for more information.
Copyright © 2001–2026 Thorsten Rinne and the phpMyFAQ Team