Ошибка инициализации библиотеки ImageMagick в 1С на Linux
- Ошибка
Ошибка инициализации библиотеки ImageMagickпри работе с картинками, штрихкодами или сканами. - Сбои в типовых механизмах распознавания и генерации QR-кодов.
- Аварийное завершение серверных вызовов обработки графических объектов (Картинка).
- В системных логах Linux фиксируется сбой загрузки разделяемых библиотек
libMagickWand-6.Q16.so.
1. Установка требуемой версии ImageMagick 6
Платформа 1С:Предприятие жестко скомпилирована с поддержкой ImageMagick 6 (версия 7 не поддерживается устаревшим API):
# Debian / Ubuntu:
apt-get install -y libmagickwand-6.q16-6 imagemagick
# RHEL / CentOS / Rocky Linux:
dnf install -y ImageMagick ImageMagick-devel ImageMagick-libs2. Создание символических ссылок при несовпадении версий so-библиотек
cd /usr/lib/x86_64-linux-gnu/ || cd /usr/lib64/
# Проверка наличия библиотеки:
ls -la libMagickWand*
# Создание симлинков, если 1С ожидает конкретное имя soname:
ln -sf libMagickWand-6.Q16.so.6 libMagickWand.so
ln -sf libMagickCore-6.Q16.so.6 libMagickCore.so
ldconfig3. Снятие ограничений безопасности в policy.xml
Откройте файл /etc/ImageMagick-6/policy.xml и разрешите операции с PDF/PNG:
<!-- Закомментируйте или удалите строки, блокирующие права -->
<!-- <policy domain="coder" rights="none" pattern="PDF" /> -->
<policy domain="coder" rights="read | write" pattern="PDF,PNG,JPEG,GIF" />4. Перезапуск кластера 1С
systemctl restart srv1cv8-8.3.* Частые вопросы (FAQ)
Поддерживает ли платформа 1С современную ветку ImageMagick 7?
Нет. Ветка ImageMagick 7 имеет несовместимый C-API (вместо MagickWand используются другие структуры). Требуется установка пакетов совместимости ImageMagick 6.
Как проверить, загрузил ли процесс rphost библиотеку MagickWand?
Выполните команду lsof -p $(pgrep rphost | head -n1) | grep -i magick. В выводе должны присутствовать открытые .so файлы.
Почему при генерации QR-кода возникает ошибка даже с установленным ImageMagick?
Проверьте лимиты памяти в файле /etc/ImageMagick-6/policy.xml (параметры policy domain='resource' name='memory'). При нехватке лимита вызов завершается с ошибкой.
Нужно ли устанавливать ImageMagick на клиентские машины пользователей?
Нет, библиотека требуется только на стороне сервера (где работает процесс rphost) при выполнении операций с графикой на сервере.