Imagick setimageopacity() is deprecated

Перешел на другой хостинг с более новой версией imagick и посыпались ошибки.
Лог полон PHP Deprecated: Function Imagick::setimageopacity() is deprecated in /site/app/lib/vendor/imagine/imagine/lib/Imagine/Imagick/Imagine.php on line 88\n
Проблема не единична, на англ.форуме есть решение по скрытию ошибок, но не их исправлению Imagick Issue - General Questions - CS-Cart and Multi-Vendor Community Forums.
На главной странице ПУ, так вообще файл https://www.cs-cart.com/images/background.gif 2 грузится 15 секунд.
Screenshot by Lightshot
php 7.2.21, imagick 6.9.4


на этом версии на другом хостинге не было ошибок

1 лайк

Для решения проблемы необходимо обновить библиотеку ImageMagick до 7-й версии.

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

ГДЕ обновить библиотеку 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 лайк