From 2516623143cfa21c5b10b72c82ba6fff6c9398e7 Mon Sep 17 00:00:00 2001 From: fds2610 Date: Thu, 26 Mar 2026 12:05:00 +0100 Subject: [PATCH] Fix #4: Logo-Upload gibt bei Fehler korrekte Fehlermeldung statt falscher Erfolgsmeldung --- Dockerfile | 6 ++++++ docker-entrypoint.sh | 4 ++++ src/Controllers/SettingsController.php | 12 ++++++++++-- src/Views/settings/form.php | 4 ++-- 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 docker-entrypoint.sh diff --git a/Dockerfile b/Dockerfile index d3a88ff..995de3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,3 +36,9 @@ RUN mkdir -p /var/www/html/public/static/uploads /var/www/html/data \ && chmod -R 755 /var/www/html/data EXPOSE 80 + +# Ensure upload directory has correct ownership at runtime (covers named volume mounts) +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +RUN chmod +x /usr/local/bin/docker-entrypoint.sh +ENTRYPOINT ["docker-entrypoint.sh"] +CMD ["apache2-foreground"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..52258b8 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Fix ownership of volume-mounted upload directory at container start +chown -R www-data:www-data /var/www/html/public/static/uploads 2>/dev/null || true +exec "$@" diff --git a/src/Controllers/SettingsController.php b/src/Controllers/SettingsController.php index 6a56368..7dda20a 100644 --- a/src/Controllers/SettingsController.php +++ b/src/Controllers/SettingsController.php @@ -73,9 +73,17 @@ class SettingsController $relPath = 'static/uploads/logo/logo.' . $ext; $absDir = dirname(__DIR__, 2) . '/public/static/uploads/logo'; - if (!is_dir($absDir)) mkdir($absDir, 0755, true); + if (!is_dir($absDir) && !mkdir($absDir, 0755, true)) { + View::redirect('/settings', 'Upload-Verzeichnis konnte nicht erstellt werden.', 'error'); + return; + } + + $dest = dirname(__DIR__, 2) . '/public/' . $relPath; + if (!move_uploaded_file($file['tmp_name'], $dest)) { + View::redirect('/settings', 'Datei konnte nicht gespeichert werden. Bitte Schreibrechte prüfen.', 'error'); + return; + } - move_uploaded_file($file['tmp_name'], dirname(__DIR__, 2) . '/public/' . $relPath); Setting::setLogo($relPath); View::redirect('/settings', 'Logo hochgeladen.'); diff --git a/src/Views/settings/form.php b/src/Views/settings/form.php index 5b402ae..8893cfe 100644 --- a/src/Views/settings/form.php +++ b/src/Views/settings/form.php @@ -159,8 +159,8 @@
- - + +
Empfohlen: transparentes PNG, mind. 300px breit