3

我想在带有 PHP 7.2.7 的 Ubuntu 服务器 18.04.1 上使用 ZipArchive::setEncryptionName

问题是 setEncryptionName 至少需要 Libzip 版本 1.2

PHP 信息中的默认配置:
Zip 版本 1.15.2
Libzip 版本 1.1.2

我不知道如何在 ubuntu 服务器上更新 Libzip,我在 win 和 mac 上没有这个问题。

4

1 回答 1

3

(1) 在 Launchpad 上找到更新版本的libzip 和 libzip-dev。目前它是 The 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
于 2018-11-30T08:42:43.810 回答