PHP Fatal error: Call to undefined method Imagick::getImageAlphaChannel()

Недавно столкнулся с такой проблемой: на одном сайте получаем ошибку, что в теме. Естественно многие подумают, что не установлен модуль imagick (или сам ImageMagick) для php. Но не тут-то было. Модуль (да и сам ImageMagick) установлен, виден через php -m, реинсталл модуля тоже не решил проблему. Через ldd проблем не видно. Осталось одно подозрение: что-то не так с самим модулем imagick.so.

И тут меня осенило: а может этой функции действительно нет в либе? Проверяем:

# strings imagick.so | grep -i ImageAlphaChannel
zim_imagick_getimagealphachannel
MagickGetImageAlphaChannel
zim_imagick_setimagealphachannel
MagickSetImageAlphaChannel
setimagealphachannel

и действительно getImageAlphaChannel нет!

Дальше дело осталось за малым — найти (или собрать из исходников) нормальную либу, где будет эта функция. В моём случае (centos 6.2, php5.3.3) пришлось искать rpm-пакет и конвертировать его через rpm2cpio, что бы извлечь imagick.so. После этого всё заработало:

# strings imagick.so | grep -i ImageAlphaChannel
zim_imagick_getimagealphachannel
MagickGetImageAlphaChannel
zim_imagick_setimagealphachannel
MagickSetImageAlphaChannel
setimagealphachannel
getimagealphachannel

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *