# Initial Setup ## Voraussetzungen - Apache HTTPD mit aktivem `mod_rewrite` - `AllowOverride All` für den Projektpfad - PHP `>= 8.0` - Schreibrechte für `storage/` (Webserver-User) ## Erforderliche PHP-Erweiterungen - `fileinfo` (MIME-Prüfung bei Uploads) - `iconv` (Zeichensatzkonvertierung für PDF-Ausgabe) - `zip` (Admin-Funktion: ZIP-Download aller Uploads) Hinweis: - `json`, `session`, `filter`, `hash`, `openssl` sind in Standard-PHP-Builds typischerweise vorhanden und werden verwendet. - `gd` wird empfohlen: WebP-Bilder können sonst nicht in PDF-Dateien eingebettet werden. Schnellcheck: ```bash php -m | grep -Ei 'fileinfo|iconv|zip|gd' php -r "echo class_exists('ZipArchive') ? 'ZipArchive ok' : 'ZipArchive fehlt', PHP_EOL;" ``` ## 1) Dateien bereitstellen ```bash cp config/app.sample.php config/app.local.php cp config/mail.sample.php config/mail.local.php ``` ## 2) Pflichtwerte konfigurieren ### `config/app.local.php` Diese Werte müssen gesetzt/validiert werden: - `base_url` (z. B. `'/antrag'` bei Subfolder-Hosting, sonst `'/'`) - `contact_email` - `admin.credentials`: - `username` - `password_hash` - optional, aber meist anzupassen: - `project_name` - `submission_success_message` - `disclaimer.*` - `retention.*` - `uploads.*` - `storage.*` (falls Speicherorte abweichend sein sollen) Passwort-Hash erzeugen: ```bash php -r "echo password_hash('DEIN-PASSWORT', PASSWORD_DEFAULT), PHP_EOL;" ``` ### `config/mail.local.php` Diese Werte müssen gesetzt werden: - `from` - `from_name` - `recipients` (mindestens ein Admin-Empfänger) - `subjects.admin` - `subjects.applicant` Zusätzlich muss der Mailversand auf dem Host funktionieren (`mail()`/MTA-Konfiguration). ## 3) Verzeichnisrechte Mindestens diese Verzeichnisse müssen für PHP schreibbar sein: - `storage/drafts` - `storage/submissions` - `storage/uploads` - `storage/logs` - `storage/locks` ## 4) Cronjob einrichten Täglich ausführen: ```bash php /pfad/zum/projekt/admin/cleanup.php ``` ## 5) .htaccess-Setup Aktuell wird ein zentrales Root-`.htaccess` verwendet. - Es blockiert direkte Zugriffe auf interne Ordner (`config`, `src`, `storage`, `docs`, `lib`). - Es blockiert interne Admin-Skripte (`admin/auth.php`, `admin/cleanup.php`, `admin/test-mail.php`). - Zusätzliche `.htaccess` pro Unterordner sind dafür nicht erforderlich. Wichtig: Wenn `AllowOverride` deaktiviert ist, greifen diese Regeln nicht.