我想在带有 PHP 7.2.7 的 Ubuntu 服务器 18.04.1 上使用 ZipArchive::setEncryptionName
问题是 setEncryptionName 需要至少 1.2 的 Libzip 版本
PHP 信息中的默认配置:
zip 版本 1.15.2
Libzip 版本 1.1.2
我不知道如何在 ubuntu 服务器上更新 Libzip,我在 win 和 mac 上没有这个问题。
最佳答案
(1) 找到更新版本的 libzip and libzip-dev on Launchpad 。目前是 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
关于php - 如何在 ubuntu 18.04 和 PHP 7.2 上将 Libzip 更新到 1.2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52130030/