Вопрос или проблема
После обновления Ubuntu 16.04 до 18.04 я не могу выполнять команды php
.
php -v
выдает мне это:
php: ошибка при загрузке общих библиотек: libMagickWand-6.Q16.so.2: невозможно открыть общий объектный файл: Нет такого файла или каталога
$ convert -version
Версия: ImageMagick 6.9.7-4 Q16 x86_64 20170114
$ ldconfig -p | grep -i libMagickWand-6.Q16.s
libMagickWand-6.Q16.so.3 (libc6,x86-64) => /usr/local/lib/libMagickWand-6.Q16.so.3
libMagickWand-6.Q16.so.3 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libMagickWand-6.Q16.so.3
libMagickWand-6.Q16.so (libc6,x86-64) => /usr/local/lib/libMagickWand-6.Q16.so
libMagickWand-6.Q16.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libMagickWand-6.Q16.so
Запуск ldconfig /usr/local/lib
не помог.
Как я могу это исправить?
Немного предисловия перед моим ответом: я знаю и работаю с Энтони Тейлером, и поэтому у меня есть некоторое представление о коренной причине проблемы.
Оказалось, что эта конкретная сборка php не была обновлена, когда вы обновляли ОС, и поэтому она ссылалась на несколько старых библиотек, которые были заменены во время обновления.
Она не была обновлена, потому что это не был пакет из репозитория или что-то подобное. Это был бинарный файл, собранный на его локальной машине.
В этой ситуации лучший подход — переустановить php, чтобы он мог ссылаться на новые библиотеки.
Вы можете установить через pecl
pecl install imagick
Приветствую!
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что после обновления вашей операционной системы Ubuntu 16.04 до 18.04, PHP не может найти необходимую библиотеку libMagickWand-6.Q16.so.2
. Это происходит потому, что происходит потеря связи с библиотеками, которые были обновлены или удалены в процессе обновления системы.
Причина проблемы
Когда вы выполняете команду php -v
, вы получаете сообщение об ошибке:
php: error while loading shared libraries: libMagickWand-6.Q16.so.2: cannot open shared object file: No such file or directory
Это указывает на то, что установленная версия PHP ссылается на библиотеку libMagickWand
, которая либо была удалена, либо изменена в процессе обновления. Судя по результатам команды ldconfig -p
, у вас установлена библиотека libMagickWand-6.Q16.so.3
, а не libMagickWand-6.Q16.so.2
.
Рекомендации по решению
-
Переустановить Imagick и PHP:
Учитывая, что ваша версия PHP не является пакетом из репозиториев, рекомендуется полностью пересобрать PHP, чтобы он мог правильно ссылаться на обновленные библиотеки. Это довольно трудоемкий процесс, но он обеспечит должную интеграцию PHP с новыми библиотеками.Чтобы это сделать, вам необходимо:
- Удалить текущую версию PHP, если она была собрана локально.
- Скомпилировать и установить PHP заново, с актуальными флагами и библиотеками.
-
Использовать PECL для установки Imagick:
Еще одним вариантом является установка расширения Imagick через PECL. Это упростит процесс интеграции и обновления библиотеки:pecl install imagick
-
Обновление окружения:
Используйте утилитуldconfig
для обновления кеша библиотек. Вам может потребоваться добавление библиотек в системные пути:sudo ldconfig
-
Проверка конфигурации PHP:
После выполнения всех вышеуказанных шагов, проверьте конфигурацию PHP с помощью команды:php -m | grep imagick
Это позволит вам убедиться, что расширение Imagick корректно загружено.
Заключение
После выполнения вышеописанных действий, ваша проблема с отсутствующей библиотекой libMagickWand-6.Q16.so.2
должна разрешиться. Если проблема сохраняется, возможно, вы захотите проверить, стоит ли продолжать использовать собранные локально версии PHP или переключиться на версии, доступные в официальных репозиториях Ubuntu, которые могут обеспечить лучшую совместимость и возможность автоматического обновления.