Vor dem ersten FTP-Deploy nach /testumgebung.kaffeeliste.de/httpdocs/
fehlte jede Absicherung des Upload-Umfangs: sync_config.jsonc hatte eine
leere excludePath-Liste, es waeren also .git (komplett herunterladbar),
.env.local (Dev-DB-Zugangsdaten) und sync_config.jsonc selbst (enthaelt
das FTP-Passwort im Klartext) mit ausgeliefert worden. Von diesen dreien
war keines von den bestehenden .htaccess-Regeln erfasst.
- sync_config.jsonc: excludePath gefuellt; scripts/ und database/ bleiben
bewusst im Deploy, weil die Plesk-Scheduled-Tasks sie vom Webspace aus
ausfuehren.
- .htaccess: sync_config.jsonc und Dotfile-Ordner gesperrt, Vendor-
Verzeichnisse (TCPDF/PHPMailer/DataTables) fuer direkte URL-Aufrufe
gesperrt, HTTPS-Redirect ergaenzt (ohne ihn bekam ein http-Besucher
eine Session ohne secure-Flag).
- PHPMailer/ entfernt: enthielt nur noch LICENSE, composer.json und ein
per URL erreichbares get_oauth_token.php, kein Quellcode. Der Versand
laeuft seit M6 ueber saas_send_mail().
- docs/deployment.md: Umgebungen, Deploy-Ablauf, Migrationen und
Cron-Jobs ueber Plesk Scheduled Tasks (kein SSH verfuegbar),
Mail-/DNS-, Stripe- und PayPal-Voraussetzungen, Go-Live-Checkliste.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PHP-FPM/mod_php auf Shared Hosting erbt keine shell-exportierten
Umgebungsvariablen wie der lokale Dev-Server. app/bootstrap.php laedt
jetzt optional env.local.php (nicht eingecheckt, siehe
env.local.example.php als Vorlage) und setzt die Variablen per
putenv(), bevor irgendein app_env()/getenv()-Aufruf passiert. Greift
jetzt auch fuer CLI-Skripte (migrate.php, grant-platform-admin.php) ueber
scripts/dev-db.php.