From 53c4e9f8a3cd8883ecdef72695854da93cbcad3c Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Fri, 24 Apr 2026 18:09:54 +0100 Subject: [PATCH] fix: GD safety check + zlib-dev for robust Alpine build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - video_api.php: check function_exists('imagecreatefromstring') before calling GD — undefined function causes PHP fatal error even with @ suppressor, kills php-fpm - Dockerfile: add zlib-dev (required for libpng on some Alpine versions) - Dockerfile: verify GD loaded after install (build log confirmation) Co-Authored-By: Claude Sonnet 4.6 --- backend/video_api.php | 6 ++++++ docker/Dockerfile | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/backend/video_api.php b/backend/video_api.php index 9bf2db2..4a48c6f 100644 --- a/backend/video_api.php +++ b/backend/video_api.php @@ -69,6 +69,12 @@ class VeoVideoAPI { [$targetW, $targetH] = $targets[$aspectRatio]; $targetRatio = $targetW / $targetH; + // GD may not be installed — fatal errors from undefined functions can't be suppressed + if (!function_exists('imagecreatefromstring')) { + error_log("resizeImageForVeo: GD extension not available, skipping resize"); + return $base64Data; + } + $decoded = base64_decode($base64Data); if ($decoded === false) return $base64Data; diff --git a/docker/Dockerfile b/docker/Dockerfile index e317ac4..35ba65e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -9,9 +9,10 @@ RUN npm run build # ── Stage 2: runtime (nginx + php-fpm) ──────────────────────────────────────── FROM php:8.2-fpm-alpine -RUN apk add --no-cache nginx supervisor libpng-dev libjpeg-turbo-dev \ +RUN apk add --no-cache nginx supervisor libpng-dev libjpeg-turbo-dev zlib-dev \ && docker-php-ext-configure gd --with-jpeg \ - && docker-php-ext-install -j$(nproc) gd + && docker-php-ext-install -j$(nproc) gd \ + && php -m | grep -i gd && echo "GD installed OK" || echo "GD missing — resize disabled" # Composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer