From 680d640ae682f731d55dd0f8ee1be773ef4015e1 Mon Sep 17 00:00:00 2001 From: "lukas.uptmoor" Date: Fri, 15 May 2026 18:53:58 +0200 Subject: [PATCH] Add Fix: Fotos-Hochladen auf Mitmachkarten-Produktivserver --- ...den auf Mitmachkarten-Produktivserver.-.md | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 Fix%3A Fotos-Hochladen auf Mitmachkarten-Produktivserver.-.md diff --git a/Fix%3A Fotos-Hochladen auf Mitmachkarten-Produktivserver.-.md b/Fix%3A Fotos-Hochladen auf Mitmachkarten-Produktivserver.-.md new file mode 100644 index 0000000..510d2b4 --- /dev/null +++ b/Fix%3A Fotos-Hochladen auf Mitmachkarten-Produktivserver.-.md @@ -0,0 +1,115 @@ +# Fix: Fotos-Hochladen auf Mitmachkarten-Produktivserver + +## Problem + +Foto-Upload funktioniert lokal (XAMPP), aber nicht auf dem Linux-Rootserver. +PHP im Docker-Container hat keine Schreibrechte auf den Upload-Ordner. + +**Fehlermeldung:** +``` +Warning: move_uploaded_file(): Permission denied +``` + + +## Server-Umgebung + +- Host: `endex-geodaten.de` +- Docker Compose Setup unter `/root/endex-webserver/` +- PHP-Container: `webgis-lohne-php` (Service: `webgis-lohne-php`) +- Upload-Ordner auf dem Host: `~/endex-webserver/webgis-lohne/public/uploads/photos/` +- Volume-Mount: `./webgis-lohne:/var/www/webgis-lohne` + + +## Bugfix + + +### Schritt 1: Per SSH verbinden + +```bash +ssh root@endex-geodaten.de +``` + + +### Schritt 2: User-ID des PHP-Containers herausfinden + +```bash +docker exec webgis-lohne-php id +``` + +**Typische Ausgabe:** +``` +uid=33(www-data) gid=33(www-data) groups=33(www-data) +``` + +Die Zahl hinter `uid=` merken (wahrscheinlich `33`). + + +### Schritt 3: Upload-Ordner dem PHP-User zuweisen + +```bash +chown -R 33:33 /root/endex-webserver/webgis-lohne/public/uploads +``` + +**Was das macht:** Setzt den Besitzer des Upload-Ordners und aller Dateien darin +auf den User, unter dem PHP im Container läuft. Dadurch kann PHP dort Dateien +erstellen und verschieben. + +**Prüfen ob es geklappt hat:** + +```bash +ls -la /root/endex-webserver/webgis-lohne/public/uploads/ +``` + +**Erwartete Ausgabe:** +``` +drwxr-xr-x 3 33 33 4096 ... . +... +drwxr-xr-x 2 33 33 4096 ... photos +``` + + +### Schritt 4: PHP Upload-Limits herausfinden + +```bash +docker exec webgis-lohne-php php -i | grep -E "upload_max|post_max|file_uploads" +``` + +**Typische Ausgabe:** +``` +file_uploads => On => On +upload_max_filesize => 2M => 2M (oder höher) +post_max_size => 8M => 8M (oder höher) +``` + +**Falls `upload_max_filesize` kleiner als 5M ist**, muss eine `php.ini`-Anpassung +im PHP-Docker-Image erfolgen. Dazu in `php-docker/Dockerfile` oder einer +Custom `php.ini` folgendes hinzufügen: + +```ini +upload_max_filesize = 10M +post_max_size = 12M +``` + +Danach Container neu bauen: + +```bash +cd /root/endex-webserver +docker compose build webgis-lohne-php +docker compose up -d webgis-lohne-php +``` + +Falls die Limits bereits >= 5M sind, ist keine Änderung nötig. + + +### Schritt 5: Upload testen + +1. Mitmachkarte öffnen: https://lohne.endex-geodaten.de +2. Im Beitrags-Formular ein Foto auswählen +3. "Beitrag einreichen" klicken +4. Erfolgsmeldung sollte erscheinen + +**Falls der Fehler weiterhin auftritt**, Logs prüfen: + +```bash +docker logs webgis-lohne-php --tail 20 +``` \ No newline at end of file