1

我在更新 10 月 CMS 时遇到问题:

在 /var/www/html/jdd/htdocs/vendor/october/rain/src/Filesystem/Zip.php 的第 51 行更新失败“找不到类 'ZipArchive'”

如果我执行 php -m,我会收到以下警告:

PHP警告:PHP启动:无法加载动态库'zip.so'(尝试:/usr/lib64/php/modules/zip.so(/usr/lib64/php/modules/zip.so:未定义符号:zip_libzip_version) , /usr/lib64/php/modules/zip.so.so (/usr/lib64/php/modules/zip.so.so: 无法打开共享对象文件: 没有这样的文件或目录)) 在第 0 行的未知

奇怪的是,在我的 /etc/php.d/ 文件夹中,zip.ini 文件包含以下行:extension=zip.so。而 /php.d 中的所有其他 .ini 文件不包括“.so”扩展名(例如:对于 json.ini 文件,该行显示为:extension=json)。我已经尝试从 zip.ini extension= 行中删除“.so”,但它仍然无法正常工作。

据我所知,系统仅运行 x86_64 可执行文件(我如何绝对确定地检查这一点 - 所有二进制文件都显示为 .x86_64 或 .noarch?)。

我尝试过其他版本的 php:-php 5.4 安装 zip.so 很好(它加载正确),除了 10 月至少需要 php 7.0。-php 7.0 到 7.3 都安装了 zip.so,但是扩展仍然不加载。

任何人都可以帮忙吗?

4

3 回答 3

3

我遇到了同样的问题并找到了以下解决方案:

  1. 搜索已安装的 php 模块:

yum list installed | grep php*

  1. 尝试找到已安装的 php-zip 模块:

rpm -ql php72-php-pecl-zip

  1. 你会看到这样的东西:
/etc/opt/remi/php72/php.d/40-zip.ini
/opt/remi/php72/root/usr/lib64/php/modules/zip.so # <----
/opt/remi/php72/root/usr/share/doc/pecl/zip
  1. 然后只需在 php 默认搜索模块的目录中创建指向此文件的符号链接:

ln -s /opt/remi/php72/root/usr/lib64/php/modules/zip.so /usr/lib64/php/modules/zip.so

在这一步之后,我终于在输出中看到了 zip 扩展名php -m,现在可以使用 class ZipArchive

此外,您可能应该重新启动您的 httpd 服务。

于 2019-04-23T09:46:15.870 回答
1

1 - 在https://pecl.php.net/package/zip手动下载最后一个 ZIP pecl lib

2 - 在下载的文件中使用 pecl 安装它

sudo pecl install zip-1.19.1.tgz

3 在 php.ini 上启用 zip

extension=zip
于 2020-11-18T17:50:38.240 回答
0

请检查您使用的是来自 remi-safe 存储库的最新 libzip5 版本 1.5.1(这是强制性的,默认情况下启用)

于 2019-01-20T06:52:46.667 回答