Я хочу использовать ZipArchive :: setEncryptionName на сервере Ubuntu 18.04.1 с PHP 7.2.7
Проблема в том, что для setEncryptionName нужна версия Libzip как минимум 1.2
конфигурация по умолчанию из информации PHP:
Zip версия 1.15.2
Libzip версия 1.1.2
Я не знаю, как обновить Libzip на сервере Ubuntu, у меня нет этой проблемы на Win и Mac.
(1) Найдите более новую версию libzip и libzip-dev на панели запуска. В настоящее время это 1.5.1 под предложенным диско-динго (вселенная). Загрузите правильные файлы deb (libzip-dev_1.5.1-0ubuntu1_amd64.deb и libzip5_1.5.1-0ubuntu1_amd64.deb).
(2) Установите их с
sudo dpkg -i libzip-dev_1.5.1-0ubuntu1_amd64.deb libzip5_1.5.1-0ubuntu1_amd64.deb
Возможно, им не хватает некоторых зависимостей, вы можете сначала попытаться установить их с помощью apt, поэтому вам не нужно загружать больше «несовместимых» пакетов с Launchpad. Затем повторите эту команду.
(3) Установите php-zip. Установите PEAR (PECL), чтобы обновить php-zip до более новой версии. Также установите php-dev, требуемый PECL для сборки php-zip.
sudo apt install php-zip php-pear php-dev
(4) Обновите php-zip для поддержки новой версии libzip.
sudo pecl install zip
(5) Возможно, вам больше не нужны библиотеки разработки.
sudo apt purge php-dev libzip-dev
sudo apt autoremove
(6) Смотрите phpinfo (), если у вас правильная версия libzip. Возможно, вам придется перезапустить ваш веб-сервер.
(7) Вы можете запретить apt автоматически обновлять ваш php-zip, нарушая вашу пользовательскую установку. Но тогда вы должны не забыть вручную обновить php с помощью pecl или проверить, поддерживает ли новая версия более новую версию libzip. (См. Установленную версию с sudo dpkg -l | grep zip)
sudo apt-mark hold php<installed version>-zip
Чтобы вернуть исходную версию (при условии, что вы использовали libzip5 и вам не нужны ранее установленные пакеты):
sudo apt-mark unhold php<installed version>-zip
sudo pecl uninstall zip
sudo apt purge php-pear libzip5 php-zip
sudo apt autoremove
sudo apt install php-zip
Других решений пока нет …