Невозможно загрузить динамическую библиотеку 'zip.so' в Centos 7.6.1810 с помощью remi-php72 repo
У меня проблемы с получением октябрьской CMS для обновления:
Не удалось обновить "Класс ZipArchive не найден" в строке 51 файла /var/www/html/jdd/htdocs/vendor/october/rain/src/Filesystem/Zip.php
И если я сделаю php -m, я получу следующее предупреждение:
Предупреждение PHP: Запуск PHP: не удается загрузить динамическую библиотеку 'zip.so' (попытался: /usr/lib64/php/modules/zip.so (/usr/lib64/php/modules/zip.so: неопределенный символ: zip_libzip_version), /usr/lib64/php/modules/zip.so.so (/usr/lib64/php/modules/zip.so.so: невозможно открыть общий объектный файл: такой файл или каталог отсутствуют)) в поле "Неизвестно" в строке 0
Странно то, что в моей папке /etc/php.d/ файл zip.ini содержит строку: extension = zip.so. в то время как все остальные файлы.ini в /php.d не имеют расширения ".so" (например, для файла json.ini строка имеет вид: extension=json). Я попытался удалить ".so" из строки расширения zip.ini =, но он все равно не будет работать.
Насколько я знаю, в системе работают только исполняемые файлы x86_64 (как мне проверить это с абсолютной уверенностью - все двоичные файлы отображаются как.x86_64 или.noarch?).
Я пробовал другие версии php: -php 5.4 устанавливает zip.so нормально (он загружается правильно), за исключением октября требуется как минимум php 7.0. -php 7.0 до 7.3 все устанавливают zip.so, но расширение все равно не загружается.
Кто-нибудь может помочь?
1 ответ
У меня та же проблема, и я нашел следующее решение:
- Поиск установленных модулей php:
yum list installed | grep php*
- Попробуйте найти установленный модуль php-zip:
rpm -ql php72-php-pecl-zip
- Вы увидите что-то вроде этого:
/etc/opt/remi/php72/php.d/40-zip.ini
/opt/remi/php72/root/usr/lib64/php/modules/zip.so # <----
/opt/remi/php72/root/usr/share/doc/pecl/zip
- Затем просто создайте символическую ссылку на этот файл в каталоге, где php ищет модули по умолчанию:
ln -s /opt/remi/php72/root/usr/lib64/php/modules/zip.so /usr/lib64/php/modules/zip.so
После этого я наконец увидел расширение zip в php -m
вывод и теперь можно использовать класс ZipArchive
,
Также вам, вероятно, следует перезапустить службу httpd.
1 - Загрузите вручную последнюю ZIP-библиотеку pecl по адресу https://pecl.php.net/package/zip
2 - Установите его с помощью pecl в загруженный файл
sudo pecl install zip-1.19.1.tgz
3 Включите zip на php.ini
extension=zip
Пожалуйста, убедитесь, что вы используете последнюю версию libzip5 1.5.1 из remi-safe репозитория (который является обязательным и включен по умолчанию)