如何在 ubuntu 18.04 和 PHP 7.2 上将 Libzip 更新到 1.2

如何在 ubuntu 18.04 和 PHP 7.2 上将 Libzip 更新到 1.2

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

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

PHP 信息的默认配置:

  • Zip 版本 1.15.2
  • Libzip 版本 1.1.2

没有帮助的命令:

  • sudo apt-get update && sudo apt-get install libzip4
    libzip4 已经是最新版本 (1.1.2-1.1)

  • sudo apt-get install php-zip
    php-zip 已经是最新版本 (1:7.2+60ubuntu1)

答案1

(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-zip 所需的 php-dev。

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 版本正确。你可能需要重启你的 web 服务器。

(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

相关内容