thorsten / phpmyfaq
FAQ System
Fund package maintenance!
thorsten
Installs: 32
Dependents: 0
Suggesters: 0
Security: 70
Stars: 584
Watchers: 37
Forks: 254
Open Issues: 13
Type:application
Requires
- php: >=8.2.0
- ext-curl: *
- ext-fileinfo: *
- ext-filter: *
- ext-gd: *
- ext-json: *
- ext-sodium: *
- ext-xml: *
- ext-xmlwriter: *
- ext-zip: *
- 2tvenom/cborencode: ^1.0
- 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.*
- mikey179/vfsstream: ^1.6
- 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-openssl: *
- ext-pgsql: *
- ext-sqlite3: *
- ext-sqlsrv: *
- dev-main
- 4.0.0-beta.2
- 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-10-01 00:53:33 UTC
README
What is phpMyFAQ?
phpMyFAQ is a multilingual, completely database-driven FAQ-system. It supports various databases to store all data; PHP 8.2+ is needed to access this data. phpMyFAQ also offers a multi-language Content Management System with a WYSIWYG editor and a media manager, real time search support with Elasticsearch, flexible multi-user support with user and group based permissions on categories and records, a wiki-like revision feature, a news system, user-tracking, 40+ supported languages, enhanced automatic content negotiation, HTML5/CSS3 based responsive templates, PDF-support, a backup and restore system, a dynamic sitemap, related FAQs, tagging, enhanced SEO features, built-in spam protection systems, Microsoft Entra ID, Microsoft Active Directory and OpenLDAP support, and an easy-to-use installation and update script.
Requirements
phpMyFAQ is only supported on PHP 8.2 and up, you need a database as well. Supported databases are MySQL, MariaDB, Percona Server, PostgreSQL, Microsoft SQL Server and SQLite3. If you want to use Elasticsearch as the main search engine, you need Elasticsearch 6.x or later. Check our detailed requirements on phpmyfaq.de for more information.
Installation
phpMyFAQ installation package for end-users
The best way to install phpMyFAQ is to download it on phpmyfaq.de, unzip the package and open http://www.example.org/phpmyfaq/setup/index.php 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 following.
Specific images started 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)
Running apache web server with PHP 8.3 support:
- phpmyfaq: 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
$ curl -s https://getcomposer.org/installer | php
$ php composer.phar install
$ php composeer.phar test
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 just open http://www.example.org/phpmyfaq/setup/index.php in your browser.
Testing
PHP
To run our unit tests via PHPUnit v11.x, just 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.
Javascript
To run our Javascript tests via Jest, just execute this command on your CLI
$ curl -fsSL https://get.pnpm.io/install.sh | sh -
$ pnpm install
$ pnpm test
End-to-end tests
Note: Not implemented yet.
To run our end-to-end tests via Playwright, you can use several commands:
$ pnpm exec playwright test
Run the end-to-end tests.
$ pnpm exec playwright test --ui
Start the interactive UI mode.
$ pnpm exec playwright test --project=chromium
Runs the tests only on Desktop Chrome.
$ pnpm exec playwright test example
Run the tests in a specific file.
$ pnpm exec playwright test --debug
Run the tests in debug mode.
$ pnpm exec playwright codegen
Auto generate tests with Codegen.
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:
<major>.<minor>.<patch>
And constructed with the following guidelines:
- Breaking backward compatibility bumps the major (and resets the minor and patch)
- New additions without breaking backward compatibility bumps the minor (and resets the patch)
- Bug fixes and misc changes bumps 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. Before opening any issue, please search for existing issues.
Contributing
Please check out our page about contributing on phpmyfaq.de.
Documentation
You can read the complete documentation on here.
REST API v3.0 documentation
The REST API documentation is available as OpenAPI 3.0 specification:
The Swagger UI is available at https://api-docs.phpmyfaq.de/.
Discord server
If you like to chat with the phpMyFAQ team, please join our Discord server. We're happy to help you with your questions!
License
Mozilla Public License 2.0, see LICENSE for more information.
Copyright © 2001–2024 Thorsten Rinne and the phpMyFAQ Team