编译此 PHP 7.3 扩展时,出现错误
configure: error: Please reinstall the libzip distribution
请问?
需要安装“libzip”包。
在 Dockerfile 中,可如下操作
# 安装 zip
RUN apt-get update && \
apt-get install -y \
libzip-dev \
&& docker-php-ext-install zip
为了使用这些函数,需要利用 --with-zip 配置选项,在使用 ZIP 支持的情况下编译 PHP。
在 PHP 7.4.0 之前,libzip 与 PHP 捆绑在一起,要编译此扩展,需要使用 --enable-zip 配置选项。从 PHP 7.3.0 开始,不建议针对已捆绑的 libzip 进行构建,但仍可通过使用 --without-libzip 配置选项来进行。
已添加 --with-libzip=DIR 配置选项以使用系统 libzip 安装。需要 libzip 版本 0.11,建议使用 0.11.2 或更高版本。
从 PHP 8.2.0 开始,php_zip.dll DLL 必须在 php.ini 中启用。之前,此扩展是内置的。
有关安装此 PECL 扩展的信息,请参阅标题为“安装 PECL 扩展”的手册章节。如新版本、下载、源文件、维护者信息和更改日志等其他信息可在此处找到:» https://pecl.php.net/package/zip。
编译此 PHP 7.3 扩展时,出现错误
configure: error: Please reinstall the libzip distribution
请问?
需要安装“libzip”包。
在 Dockerfile 中,可如下操作
# 安装 zip
RUN apt-get update && \
apt-get install -y \
libzip-dev \
&& docker-php-ext-install zip
解决“未找到 No package 'libzip'”问题
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig/
$ ./configure \
...
--with-zip \
...
配置正常
$ make && make install
未找到 No package 'libzip'
从源代码安装 PHP
./configure \
--prefix=/usr/local/php-7.4.5 \
--disable-debug \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-inline-optimization \
--enable-ftp \
--enable-xml \
--with-libdir=/usr/lib64 \
--with-curl \
--with-iconv \
--with-gettext \
--with-mysqli \
--enable-pdo \
--with-pdo-mysql \
--with-zlib \
--with-zlib-dir=/usr/lib \
--srcdir=/usr/local/src/php-7.4.5 \
--enable-sockets \
--enable-soap \
--with-openssl \
--enable-gd \
--with-jpeg \
--with-xpm \
--with-freetype \
--with-zip \
--with-libzip=/usr/local/lib64/ \
ONIG_LIBS=/usr/lib64
检查 zip 存档读取/写入支持...是
检查 libzip >= 0.11...否
configure:错误:未满足程序包要求 (libzip >= 0.11)
未找到 No package 'libzip'
如果您
在非标准前缀中安装了软件,请考虑调整 PKG_CONFIG_PATH 环境变量。
或者,您可以设置环境变量 LIBZIP_CFLAGS
和 LIBZIP_LIBS,以避免需要调用 pkg-config。
请参阅 pkg-config 手册页了解更多详细信息。
从源安装 Libzip-1.10.1
make install
[ 50%] 构建目标 zip
[ 94%] 构建目标 man
[ 96%] 构建目标 zipcmp
[ 96%] 构建目标 zipmerge
[ 98%] 构建目标 ziptool
[ 98%] 构建目标 add-compressed-data
[ 98%] 构建目标 autoclose-archive
[100%] 构建目标 in-memory
安装项目...
-- 安装配置:""
-- 安装:/usr/local/lib64/pkgconfig/libzip.pc
-- 安装:/usr/local/lib64/cmake/libzip/modules/FindNettle.cmake
-- 安装:/usr/local/lib64/cmake/libzip/modules/Findzstd.cmake
-- 安装:/usr/local/lib64/cmake/libzip/modules/FindMbedTLS.cmake
-- 安装:/usr/local/include/zipconf.h
-- 安装:/usr/local/lib64/cmake/libzip/libzip-config.cmake
-- 安装:/usr/local/lib64/cmake/libzip/libzip-config-version.cmake
-- 安装:/usr/local/lib64/cmake/libzip/libzip-targets.cmake
-- 安装:/usr/local/lib64/cmake/libzip/libzip-targets-noconfig.cmake
-- 安装:/usr/local/lib64/libzip.so.5.5
-- 已更新:/usr/local/lib64/libzip.so.5
-- 已更新:/usr/local/lib64/libzip.so
-- 安装:/usr/local/include/zip.h
-- 安装:/usr/local/share/man/man3/ZIP_SOURCE_GET_ARGS.3
...
...
-- 安装:/usr/local/bin/zipcmp
-- 将"/usr/local/bin/zipcmp"的运行时路径设置为""
-- 安装:/usr/local/bin/zipmerge
-- 将"/usr/local/bin/zipmerge"的运行时路径设置为""
-- 安装:/usr/local/bin/ziptool
-- 将"/usr/local/bin/ziptool"的运行时路径设置为""
操作系统:RedHat-7.9
对于那些询问如何在 Dockerfile 中更新此问题的人,答案似乎是像这样添加到环境变量中
ENV PHP_EXTRA_CONFIGURE_ARGS="--with-apxs2 --disable-cgi --with-zip"
如果在使用
"docker-php-ext-install zip"
在 Docker 映像中安装此项,您可能会收到错误,例如
"docker-php-ext-install zip 返回了一个非零代码:1"
或
"zip 支持需要 ZLIB"
作为避免将与之相关的依赖库进行安装的一种方式,Docker 文档目前建议以这种方式来进行安装
# 安装 zip
RUN apt-get update && \
apt-get install -y \
zlib1g-dev \
&& docker-php-ext-install zip
在尝试于 CentOS 7.x 中编译 PHP 7.4.x 时,我遇到了可怕的"无法满足软件包需求(libzip >= 0.11)"错误
由于适用于 lipzip 0.11.2 的引用的 RPM 软件包是第三方(仓库名为 Psychotic Ninja Plus,并非非常值得信赖),所以我尝试从源进行编译。
我得以找到适用于 0.11.1 的 git sha1 并成功进行编译 - 如果需要的话
d2aac947ccc85bd4abbd02a6d9b237bdaa89d3f0
如果熟知此事的用户可以发布适用于 0.11.2 或任何经过成功编译的 libzip 首选版本的 sha1,我对此将不胜感激!