Imagick setimageopacity() is deprecated

ГДЕ обновить библиотеку ImageMagick??
На хостинге?
в CS-cart?

Думаю имели ввиду на хостинге VPS. На виртуальном это не пройдет.
И ответа тут уже не будет т.к. не признано багом

Библиотеку нужно обновить на сервере

почему тогда на другом хостинге с версией 6.7.7 работает без ошибок, а на версии 6.9.4 ошибки?

В более новой версии функция Imagick::setimageopacity помечена как deprecated, вероятно чтобы стимулировать переход на версию 7.
Логично, что в более старой версии она не была помечена как устаревшая.

Вы хотите сказать, что при изменении библиотеки на хостинге ошибка кода cs-cart
PHP Deprecated: Function Imagick::setimageopacity() is deprecated in /app/lib/vendor/imagine/imagine/lib/Imagine/Imagick/Imagine.php on line 88

исчезнет?
Мне кажется, при обновлении библиотеки на сервере, этот код совсем перестанет работать…
Поправьте, если ошибаюсь.

По моим соображениям цскарт использует устаревшую функцию.

Вы ответите на вопрос выше?
Здесь: Imagick setimageopacity() is deprecated
?

То ли лыжи не едут, то ли …
4.11.1 Исправления ошибок
[!] Ядро: Изображения: Imagick: Возникала ошибка: “PHP Deprecated: Function Imagick::setimageopacity() is deprecated”. Исправлено.
Получается я тереблю поддержку хостера, говорю исправьте свою ошибку, трепаю себе и всем нервы, а оказывается это баг цскарт, который то “Не признано багом”? Ребята, вы вообще как там поживаете?

3 лайка

Обновление до 7 версии решило вопрос ?

У меня виртуальный хостинг, нельзя отдельно обновить только мне библиотеку. Просто забил на баг.

вот кусок кода из imagine, в котором возникала ошибка:

            if (version_compare('6.3.1', $this->getVersion($imagick)) < 0) {
            // setImageOpacity was replaced with setImageAlpha in php-imagick v3.4.3
            if (method_exists($imagick, 'setImageAlpha')) {
                $imagick->setImageAlpha($pixel->getColorValue(\Imagick::COLOR_ALPHA));
            } else {
                $imagick->setImageOpacity($pixel->getColorValue(\Imagick::COLOR_ALPHA));
            }
        }

т.е. да, при обновлении Imagick на хостинге ошибка исчезнет, как мы и писали выше.

В ядро вошел патч для тех кто по какой-то причине не может обновить Imagick на своем сервере. Патч обновляет библиотеку imagine. В новой версии вызов этого метода никуда не делся, разработчики imagine просто добавили подавление ошибок в месте вызова.

Дополнительно по теме топика

Imagine прекращает поддержку ImageMagick 6, поэтому мы рекомендуем всем обновиться до версии 7

1 лайк

Может быть подскажете фикс, который подавит ошибку для тех, кто не имеет возможности обновить библиотеку ImageMagick на хостинге?

Пару дней назад решал эту проблему для cs-cart 4.3.6

Теперь все работает исправно.

1 лайк

Обновил ImageMagick до 7 версии, предупреждения Deprecated исчезли

Обновление до 7 версии не решает проблему, она только маскируется, точнее ошибка не выводится, но функционал не работает. Мы пока реализовали такой вариант исправления ошибки, прошу проверить и подтвердить все ли работает корректно:
https://zahid.host/ru/ispravlenie-oshibki-v-biblioteke-imagine/

Хотя проблему почему-то не признали багом, считаю что исправление реализованное в 4.11.1 не корректно, и нуждается в повторном исправлении, так как функция банально отключается, хотя пользователь рассчитывает на то что она работает корректно.

1 лайк

Пожалуйста, посмотрите в сообщениях выше сниппет кода, в котором возникает варнинг. В ImageMagick 7 метод setImageOpacity был заменен на setImageAlpha и в ней используется именно он.

Да, это я понимаю, но для старых версий вы просто выпилили этот функционал, ImageMagick 7 не поддерживается стандартными репозиториями Ubuntu/Debian текущая версия остается 6, все сводиться до компилирования пакета, по сути он ещё не зарелизился, потому более логично было бы все же исправить а не отключать, тем более функция-заменитель существует, или наш вариант не корректен по каким-то причинам?

2 лайка

в 4.11.1 вообще нет такого файла по этому пути :confused: