1
Fix: Fotos-Hochladen auf Mitmachkarten-Produktivserver
lukas.uptmoor edited this page 2026-05-15 18:53:58 +02:00

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

ssh root@endex-geodaten.de

Schritt 2: User-ID des PHP-Containers herausfinden

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

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:

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

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:

upload_max_filesize = 10M
post_max_size = 12M

Danach Container neu bauen:

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:

docker logs webgis-lohne-php --tail 20