initial_setup.md 2.4 KB

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:

php -m | grep -Ei 'fileinfo|iconv|zip|gd'
php -r "echo class_exists('ZipArchive') ? 'ZipArchive ok' : 'ZipArchive fehlt', PHP_EOL;"

1) Dateien bereitstellen

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:

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:

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.