Table of Contents
Installation
Requirements
- XAMPP (or any Apache + PHP + MySQL
stack) with
mod_rewriteandmod_authz_coreenabled — both are active by default in XAMPP - PHP 8.0 or newer (uses typed properties/return types,
??=-style null coalescing, etc.) - A MySQL/MariaDB database
Steps
-
Copy the project into your
htdocsfolder, e.g.C:\xampp\htdocs\my-app. The folder name is completely free to choose — the app detects its own base path automatically (see Architecture). -
Start Apache and MySQL in the XAMPP control panel.
-
Create a database, e.g. via phpMyAdmin:
CREATE DATABASE meine_datenbank; -
Import the schema. Open phpMyAdmin, select the new database, and import
sql/database.sql. This single file creates theusertable with all roles and columns. -
Configure the connection. Edit
config/database.phpand set$DB_HOST,$DB_NAME,$DB_USER,$DB_PASSto match your environment. -
Check
.htaccesssupport. Make sureAllowOverride Allis set for thehtdocsdirectory in your Apache config, otherwise the rewrite rules in.htaccess(and the "deny direct access" rules inapp/,config/,includes/,pages/,sql/) won't be applied. -
Create the first administrator. Every self-registered account starts with the
pendingrole, so at least one admin account must be created manually:- Open in your browser:
http://localhost/<your-folder>/tools/generate_hash.php?pw=yourPassword - Copy the generated
INSERTstatement and run it in phpMyAdmin (a template is also included as a comment insql/database.sql). - Delete
tools/generate_hash.phpafterwards (or lock down thetools/folder) — it's a development helper only, not something that should stay reachable in production.
- Open in your browser:
-
Open the app:
http://localhost/<your-folder>/
Verifying the setup
/should show the public home page./registershould let you create apendingaccount.- Logging in with your admin account and visiting
/admin/usersshould show the user list, including your own account and any test accounts you registered.
If something doesn't work, see Troubleshooting.