]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
fix: проверка наличия GD перед thumbnail-генерацией
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 3 Jun 2026 10:32:57 +0000 (13:32 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 3 Jun 2026 10:32:57 +0000 (13:32 +0300)
function_exists('imagejpeg') guard перед вызовами GD.
Без GD-расширения: smUrl = bigUrl (оригинал как превью).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
erp24/controllers/CityStoreManagementController.php

index 366be78b81c52342c19491c9846b45a64676363d..526becb5ef4df9b3d9591f32b188b9dab6026e58 100644 (file)
@@ -427,30 +427,28 @@ class CityStoreManagementController extends Controller
             return ['success' => false, 'message' => 'Ошибка создания директории'];
         }
 
-        $base   = 'store_' . $storeId . '_' . time();
+        $base    = 'store_' . $storeId . '_' . time();
         $bigFile = $dir . $base . '_big.' . $ext;
-        $smFile  = $dir . $base . '_sm.jpg';
 
         $file->saveAs($bigFile);
 
         $urlDir = '/uploads/' . $adminId . '/' . $dateDir . '/';
         $bigUrl = $urlDir . $base . '_big.' . $ext;
-
-        // Thumbnail через нативный GD (избегаем Imagine — может не иметь libjpeg)
-        $srcImg = match ($ext) {
-            'png'  => @imagecreatefrompng($bigFile),
-            'webp' => @imagecreatefromwebp($bigFile),
-            default => @imagecreatefromjpeg($bigFile),
-        };
-
-        if ($srcImg !== false) {
-            $thumb = imagescale($srcImg, 300, 200);
-            imagejpeg($thumb, $smFile, 85);
-            $smUrl = $urlDir . $base . '_sm.jpg';
-        } else {
-            // GD не смог открыть файл — используем оригинал как превью
-            $smFile = $bigFile;
-            $smUrl  = $bigUrl;
+        $smUrl  = $bigUrl; // fallback: превью = оригинал
+
+        // Thumbnail через GD, если расширение доступно
+        if (function_exists('imagejpeg') && function_exists('imagescale')) {
+            $srcImg = match ($ext) {
+                'png'  => function_exists('imagecreatefrompng')  ? @imagecreatefrompng($bigFile)  : false,
+                'webp' => function_exists('imagecreatefromwebp') ? @imagecreatefromwebp($bigFile) : false,
+                default => function_exists('imagecreatefromjpeg') ? @imagecreatefromjpeg($bigFile) : false,
+            };
+
+            if ($srcImg !== false) {
+                $smPath = $dir . $base . '_sm.jpg';
+                imagejpeg(imagescale($srcImg, 300, 200), $smPath, 85);
+                $smUrl  = $urlDir . $base . '_sm.jpg';
+            }
         }
 
         $store->image_big = $bigUrl;