我想在Ubuntu服务器18.04.1上使用ZipArchive :: setEncryptionName和PHP 7.2.7
问题是setEncryptionName需要Libzip版本至少1.2
PHP信息的默认配置: Zip版本1.15.2 Libzip 1.1.2版
我不知道如何在ubuntu服务器上更新Libzip,我在win和mac上没有这个问题。
(1)找到更新版本的libzip and libzip-dev on Launchpad。目前在Eoan Ermine下面是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升级到更新版本。还要安装PECL所需的php-dev来构建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)如果你有正确的libzip版本,请参阅phpinfo()。您可能需要重新启动网络服务器。
(7)您可以阻止apt自动升级您的php-zip,破坏您的自定义安装。但是你应该记得用pecl手动升级php,或检查新版本是否支持更新的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