Add Fix: Fotos-Hochladen auf Mitmachkarten-Produktivserver
115
Fix%3A Fotos-Hochladen auf Mitmachkarten-Produktivserver.-.md
Normal file
115
Fix%3A Fotos-Hochladen auf Mitmachkarten-Produktivserver.-.md
Normal file
@@ -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
|
||||
```
|
||||
Reference in New Issue
Block a user