$git clone https://github.com/thorsten/phpMyFAQphpMyFAQ 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 man
| 1 | # phpMyFAQ |
| 2 | |
| 3 |  |
| 4 |  |
| 5 |  |
| 6 | [](https://phpmyfaq.readthedocs.io/en/latest/?badge=latest) |
| 7 | |
| 8 | ## What is phpMyFAQ? |
| 9 | |
| 10 | phpMyFAQ is a multilingual, AI-ready, and scalable FAQ platform built for modern knowledge management. |
| 11 | Powered by PHP 8.4+ and a fully database-driven architecture, it delivers fast search with Elasticsearch/OpenSearch, |
| 12 | flexible multi-user permissions, and a powerful content management system with revision history and WYSIWYG editing. |
| 13 | |
| 14 | With 40+ languages, responsive Twig-based templates, a REST API, 2FA security, enterprise authentication |
| 15 | (LDAP, Active Directory, Entra ID), and a built-in plugin system, phpMyFAQ integrates seamlessly into almost any |
| 16 | environment. |
| 17 | |
| 18 | Deploy it on traditional hosting or run it in the cloud via Docker. |
| 19 | |
| 20 | ## Requirements |
| 21 | |
| 22 | phpMyFAQ requires PHP 8.4 or higher and a supported database system. |
| 23 | Supported databases include MySQL, MariaDB, Percona Server, PostgreSQL, Microsoft SQL Server, and SQLite3. |
| 24 | |
| 25 | For enhanced search capabilities using Elasticsearch or OpenSearch, Elasticsearch 8.x or later or OpenSearch 2.x or |
| 26 | later is required. |
| 27 | |
| 28 | For a complete and up-to-date list of system requirements, please refer to the official documentation at |
| 29 | [phpmyfaq.de](https://www.phpmyfaq.de/requirements). |
| 30 | |
| 31 | ## Installation |
| 32 | |
| 33 | ### phpMyFAQ installation package for end-users |
| 34 | |
| 35 | The best way to install phpMyFAQ is to download it on [phpmyfaq.de](https://www.phpmyfaq.de/download), unzip the package, |
| 36 | and open http://www.example.org/phpmyfaq/setup/ in your preferred browser. |
| 37 | |
| 38 | ### phpMyFAQ installation with Docker |
| 39 | |
| 40 | #### Dockerfile |
| 41 | |
| 42 | The Dockerfile provided in this repo only builds an environment to run any release for development purpose. |
| 43 | It does not contain any code |
| 44 | as the phpmyfaq folder is meant to be mounted as the `/var/www/html` folder in the container. |
| 45 | |
| 46 | #### docker-compose.yml |
| 47 | |
| 48 | For development purposes, you can run your current phpMyFAQ source code from your local repo. Every service is |
| 49 | gated behind a [Compose profile](https://docs.docker.com/compose/profiles/), so you pick exactly the combination |
| 50 | you need (one web server + the databases and search engines you want to test against). |
| 51 | |
| 52 | The easiest way is the `bin/dev` helper, which maps friendly names to profiles and adds guardrails (it refuses to |
| 53 | start two web servers on the same port, auto-adds Redis, generates self-signed dev TLS certificates, and |
| 54 | installs dependencies on first run): |
| 55 | |
| 56 | $ bin/dev up nginx mariadb opensearch # exactly these (Redis added automatically) |
| 57 | $ bin/dev up apache postgres elasticsearch --tools |
| 58 | $ bin/dev preset default # nginx + mariadb + opensearch + redis |
| 59 | $ bin/dev preset full # one web server + every backing service |
| 60 | $ bin/dev down # stop and remove the running stack |
| 61 | $ bin/dev ps | logs [service] | shell <service> |
| 62 | |
| 63 | Run `bin/dev help`, `bin/dev presets`, or `bin/dev profiles` for the full list. The same commands are available |
| 64 | through pnpm: `pnpm dev:up`, `pnpm dev:down`, `pnpm dev:default`, `pnpm dev:full`, etc. |
| 65 | |
| 66 | If you prefer raw Compose, pass the profiles yourself — a bare `docker compose up` now starts nothing, because no |
| 67 | service is in the default profile: |
| 68 | |
| 69 | $ docker compose --profile nginx --profile mariadb --profile opensearch --profile redis up |
| 70 | |
| 71 | The available services (grouped by their profile) are: |
| 72 | |
| 73 | _Web servers — pick one (all bind `:443`), each with PHP 8.5 support:_ |
| 74 | |
| 75 | - **nginx** (`nginx`): mounts `phpmyfaq` as `/var/www/html`, served via the **php-fpm** container. |
| 76 | - **apache** (`apache`): mounts `phpmyfaq` as `/var/www/html`. |
| 77 | - **frankenphp** (`frankenphp`): mounts `phpmyfaq` as `/var/www/html`, with HTTP/3 |