{"id":14969043,"url":"https://github.com/thorsten/phpmyfaq","last_synced_at":"2026-04-27T05:01:01.171Z","repository":{"id":628453,"uuid":"269027","full_name":"thorsten/phpMyFAQ","owner":"thorsten","description":"phpMyFAQ - Open Source FAQ web application for PHP 8.3+ and MySQL, PostgreSQL and other databases","archived":false,"fork":false,"pushed_at":"2026-04-21T04:21:54.000Z","size":67963,"stargazers_count":617,"open_issues_count":14,"forks_count":262,"subscribers_count":31,"default_branch":"main","last_synced_at":"2026-04-21T05:04:07.532Z","etag":null,"topics":["database","docker","docker-compose","elasticsearch","faq","frankenphp","kubernetes","mariadb","mcp-server","mssql","mysql","opensearch","php","phpmyfaq","postgresql","sqlite"],"latest_commit_sha":null,"homepage":"https://www.phpmyfaq.de","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":"Unmaintained","scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thorsten.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["thorsten"]}},"created_at":"2009-08-04T19:26:15.000Z","updated_at":"2026-04-21T04:21:17.000Z","dependencies_parsed_at":"2026-04-21T05:01:31.284Z","dependency_job_id":null,"html_url":"https://github.com/thorsten/phpMyFAQ","commit_stats":{"total_commits":12293,"total_committers":99,"mean_commits":"124.17171717171718","dds":"0.47230130968844053","last_synced_commit":"227f21b166d9bbf7da545346877ecbd0d94b0a23"},"previous_names":[],"tags_count":1868,"template":false,"template_full_name":null,"purl":"pkg:github/thorsten/phpMyFAQ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorsten%2FphpMyFAQ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorsten%2FphpMyFAQ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorsten%2FphpMyFAQ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorsten%2FphpMyFAQ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thorsten","download_url":"https://codeload.github.com/thorsten/phpMyFAQ/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorsten%2FphpMyFAQ/sbom","scorecard":{"id":351854,"data":{"date":"2025-08-11","repo":{"name":"github.com/thorsten/phpMyFAQ","commit":"c0945063b3b9906ace024819f601cb11b4c9b4b1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.5,"checks":[{"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Maintained","score":10,"reason":"30 commit(s) and 21 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Code-Review","score":0,"reason":"Found 0/22 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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:30","Warn: no topLevel permission defined: .github/workflows/4.0-nightly.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/build.yml:8","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:24","Warn: no topLevel permission defined: .github/workflows/dev-nightly.yml:1","Info: no jobLevel write permissions found"],"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":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"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":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Mozilla Public License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 4.0-nightly-2025-08-17 not signed: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240418073","Warn: release artifact development-nightly-2025-08-17 not signed: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240418139","Warn: release artifact 4.0-nightly-2025-08-16 not signed: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240341100","Warn: release artifact development-nightly-2025-08-16 not signed: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240341174","Warn: release artifact 4.0-nightly-2025-08-15 not signed: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240135128","Warn: release artifact 4.0-nightly-2025-08-17 does not have provenance: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240418073","Warn: release artifact development-nightly-2025-08-17 does not have provenance: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240418139","Warn: release artifact 4.0-nightly-2025-08-16 does not have provenance: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240341100","Warn: release artifact development-nightly-2025-08-16 does not have provenance: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240341174","Warn: release artifact 4.0-nightly-2025-08-15 does not have provenance: https://api.github.com/repos/thorsten/phpMyFAQ/releases/240135128"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:95: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/4.0-nightly.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/4.0-nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:78: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dev-nightly.yml:98: update your workflow using https://app.stepsecurity.io/secureworkflow/thorsten/phpMyFAQ/dev-nightly.yml/main?enable=pin","Warn: containerImage not pinned by hash: .docker/apache/Dockerfile:9: pin your Docker image by updating php:8.4.5RC1-apache to php:8.4.5RC1-apache@sha256:77a8714f2b78f18fdb1ef6eb635f78ae78160e4d31d7f5e21861e1fc2c597f58","Warn: containerImage not pinned by hash: .docker/frankenphp/Dockerfile:9: pin your Docker image by updating dunglas/frankenphp:latest to dunglas/frankenphp:latest@sha256:1229f3a121b5c719bf75560e687deb2ad34363bcc60fcf9a666ac0a5a80f6332","Warn: containerImage not pinned by hash: .docker/php-fpm/Dockerfile:9: pin your Docker image by updating php:8.4.5RC1-fpm to php:8.4.5RC1-fpm@sha256:8b474aaff6191d6c5d14a68b7f7ed880bb2ada296390c27ff3efd8c0a677442f","Warn: containerImage not pinned by hash: Dockerfile:7","Warn: containerImage not pinned by hash: Dockerfile:25: pin your Docker image by updating php:8.4-cli to php:8.4-cli@sha256:22dfaf12390946424b932c67f3f949268511e6a834f788f4e8a6fa34fb12d1c4","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  12 third-party GitHubAction dependencies pinned","Info:   0 out of   5 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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (8) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92"],"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-18T08:31:02.310Z","repository_id":628453,"created_at":"2025-08-18T08:31:02.310Z","updated_at":"2025-08-18T08:31:02.310Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32323215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"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":["database","docker","docker-compose","elasticsearch","faq","frankenphp","kubernetes","mariadb","mcp-server","mssql","mysql","opensearch","php","phpmyfaq","postgresql","sqlite"],"created_at":"2024-09-24T13:41:02.357Z","updated_at":"2026-04-27T05:01:01.101Z","avatar_url":"https://github.com/thorsten.png","language":"PHP","readme":"# phpMyFAQ\n\n![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/thorsten/phpMyFAQ)\n![GitHub](https://img.shields.io/github/license/thorsten/phpMyFAQ)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/thorsten/phpMyFAQ)\n[![Documentation Status](https://readthedocs.org/projects/phpmyfaq/badge/?version=latest)](https://phpmyfaq.readthedocs.io/en/latest/?badge=latest)\n\n## What is phpMyFAQ?\n\nphpMyFAQ is a multilingual, AI-ready, and scalable FAQ platform built for modern knowledge management.\nPowered by PHP 8.4+ and a fully database-driven architecture, it delivers fast search with Elasticsearch/OpenSearch, \nflexible multi-user permissions, and a powerful content management system with revision history and WYSIWYG editing.\n\nWith 40+ languages, responsive Twig-based templates, a REST API, 2FA security, enterprise authentication \n(LDAP, Active Directory, Entra ID), and a built-in plugin system, phpMyFAQ integrates seamlessly into almost any \nenvironment.\n\nDeploy it on traditional hosting or run it in the cloud via Docker.\n\n## Requirements\n\nphpMyFAQ requires PHP 8.4 or higher and a supported database system.\nSupported databases include MySQL, MariaDB, Percona Server, PostgreSQL, Microsoft SQL Server, and SQLite3.\n\nFor enhanced search capabilities using Elasticsearch or OpenSearch, Elasticsearch 6.x or later or OpenSearch 1.x or \nlater is required.\n\nFor a complete and up-to-date list of system requirements, please refer to the official documentation at\n[phpmyfaq.de](https://www.phpmyfaq.de/requirements).\n\n## Installation\n\n### phpMyFAQ installation package for end-users\n\nThe best way to install phpMyFAQ is to download it on [phpmyfaq.de](https://www.phpmyfaq.de/download), unzip the package,\nand open http://www.example.org/phpmyfaq/setup/ in your preferred browser.\n\n### phpMyFAQ installation with Docker\n\n#### Dockerfile\n\nThe Dockerfile provided in this repo only builds an environment to run any release for development purpose.\nIt does not contain any code\nas the phpmyfaq folder is meant to be mounted as the `/var/www/html` folder in the container.\n\n#### docker-compose.yml\n\nFor development purposes, you can start a full stack to run your current PhpMyFAQ source code from your local repo.\n\n    $ docker-compose up\n\nThe command above starts nine containers for multi-database development as follows.\n\n_Specific images started at once to prepare the project:_\n\n- **composer**: update composer dependencies\n- **pnpm**: update pnpm dependencies\n\n_Running using named volumes:_\n\n- **mariadb**: image with MariaDB database with xtrabackup support\n- **phpmyadmin**: a PHP tool to have a look at your MariaDB database.\n- **postgres**: image with PostgreSQL database\n- **pgadmin**: a PHP tool to have a look at your PostgreSQL database.\n- **sqlserver**: image with Microsoft SQL Server for Linux\n- **elasticsearch**: Open Source Software image (it means it does not have XPack installed)\n- **opensearch**: OpenSearch image (it means it does not have XPack installed)\n- **redis**: image with a Redis database\n\n_Running apache web server with PHP 8.5 support:_\n\n- **apache**: mounts the `phpmyfaq` folder in place of `/var/www/html`.\n\n_Running nginx web server with PHP 8.5 support:_\n\n- **nginx**: mounts the `phpmyfaq` folder in place of `/var/www/html`.\n- **php-fpm**: PHP-FPM image with PHP 8.5 support\n\n_Running FrankenPHP web server with PHP 8.5 support:_\n\n- **frankenphp**: mounts the `phpmyfaq` folder in place of `/var/www/html`.\n\nThen services will be available at the following addresses:\n\n- phpMyFAQ: (https://localhost:443 or http://localhost:8080 as fallback)\n- phpMyAdmin: (http://localhost:8000)\n- pgAdmin: (http://localhost:8008)\n\n#### Running tests\n\nTo run the test using Docker, you have to install the Composer development dependencies\n\n    $ docker build -t phpmyfaq-test . \u0026\u0026 docker run --rm -it docker.io/library/phpmyfaq-test:latest \n\n#### Quote from Elasticsearch documentation\n\nThe vm.max_map_count kernel setting needs to be set to at least 262144 for production use. Depending on your platform:\n\n##### Linux\n\nThe vm.max*map_count setting should be set permanently in */etc/sysctl.conf\\_:\n\n    $ grep vm.max_map_count /etc/sysctl.conf\n    vm.max_map_count=262144\n\nTo apply the setting on a live system type: `sysctl -w vm.max_map_count=262144`\n\n##### macOS with Docker for Mac\n\nThe vm.max_map_count setting must be set within the xhyve virtual machine:\n\n    $ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty\n\nLog in with root and no password. Then configure the sysctl setting as you would for Linux:\n\n    $ sysctl -w vm.max_map_count=262144\n\n##### Windows and macOS with Docker Toolbox\n\nThe vm.max_map_count setting must be set via docker-machine:\n\n    $ docker-machine ssh\n    $ sudo sysctl -w vm.max_map_count=262144\n\n### phpMyFAQ local installation from Github\n\nTo run phpMyFAQ locally, you need at least a running web server with PHP support and a database.\n\n    $ git clone git://github.com/thorsten/phpMyFAQ.git\n    $ cd phpMyFAQ\n    $ git checkout main\n    $ curl -s https://getcomposer.org/installer | php\n    $ php composer.phar install\n    $ curl -fsSL https://get.pnpm.io/install.sh | sh -\n    $ pnpm install\n    $ pnpm build\n\nThen open http://www.example.org/phpmyfaq/setup/ in your browser.\n\n## Testing\n\n### PHP\n\nTo run our unit tests via PHPUnit v13.x, execute this command on your CLI\n\n    $ curl -s https://getcomposer.org/installer | php\n    $ php composer.phar install\n    $ ./vendor/bin/phpunit\n\nPlease note that phpMyFAQ needs to be installed via Composer.\n\n### TypeScript\n\nTo run our TypeScript tests via Vitest, execute this command on your CLI\n\n    $ curl -fsSL https://get.pnpm.io/install.sh | sh -\n    $ pnpm install\n    $ pnpm test\n\n## Versioning\n\nFor transparency and insight into our release cycle, and for striving to maintain backward compatibility, phpMyFAQ will\nbe maintained under the Semantic Versioning guidelines as much as possible.\n\nReleases will be numbered with the following format:\n\n`\u003cmajor\u003e.\u003cminor\u003e.\u003cpatch\u003e`\n\nAnd constructed with the following guidelines:\n\n- Breaking backward compatibility bumps the major (and resets the minor and patch)\n- New additions without breaking backward compatibility bump the minor (and reset the patch)\n- Bug fixes and misc changes bump the patch\n\nFor more information on SemVer, please visit http://semver.org/.\n\n## Issue tracker\n\nFound a bug, or do you have a feature request? [Please open a new issue](https://github.com/thorsten/phpMyFAQ/issues).\nBefore opening any issue, please search for existing issues.\n\n## Contributing\n\nPlease check out our page about contributing on [phpmyfaq.de](https://www.phpmyfaq.de/contribute).\n\n## Documentation\n\nYou can read the complete documentation on [here](https://phpmyfaq.readthedocs.io/en/latest/).\n\n## REST API documentation\n\nThe REST API documentation is available as an OpenAPI 3.0 specification:\n\n- [JSON](docs/openapi.json)\n- [YAML](docs/openapi.yaml)\n\nThe Swagger UI is available at [https://api-docs.phpmyfaq.de/](https://api-docs.phpmyfaq.de/).\n\n## Discord server\n\nIf you like to chat with the phpMyFAQ team, please join our [Discord server](https://discord.gg/wszhTceuNM).\nWe're happy to help you with your questions!\n\n## License\n\nMozilla Public License 2.0, see LICENSE for more information.\n\nCopyright © 2001–2026 Thorsten Rinne and the phpMyFAQ Team\n","funding_links":["https://github.com/sponsors/thorsten"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorsten%2Fphpmyfaq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthorsten%2Fphpmyfaq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorsten%2Fphpmyfaq/lists"}