php:8.0.2-fpm-buster安装redis扩展无法启用zstd支持问题咨询
问题根因
报错核心原因是编译带zstd支持的redis扩展时,需要依赖系统层面的libzstd开发头文件与链接库。此前通过pecl install zstd安装的仅为PHP层面的zstd扩展,不会给Debian Buster系统部署底层libzstd开发依赖,configure脚本在默认系统路径检索不到对应文件时就会抛出该错误。
解决方案
方案1:安装系统依赖后正常编译(推荐)
先安装Debian源提供的libzstd开发包,再执行扩展安装流程即可,容器构建可参考如下命令顺序:
# 安装系统层libzstd依赖,安装后清理apt缓存压缩镜像体积 RUN apt-get update && apt-get install -y --no-install-recommends libzstd-dev \ && rm -rf /var/lib/apt/lists/* # 安装PHP扩展 RUN pecl install zstd \ # 注意:官方php:fpm镜像的扩展配置目录为/usr/local/etc/php/conf.d/,ini文件放入该目录可自动加载,无需修改主php.ini && echo "extension=zstd.so" > /usr/local/etc/php/conf.d/zstd.ini \ # 通过重定向自动输入yes确认开启zstd支持,避免构建过程交互卡住 && pecl install redis <<< "yes" \ && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
如果安装完libzstd-dev后仍提示找不到文件,可以手动指定libzstd路径执行安装:
pecl install redis --configureoptions 'enable-redis-zstd="yes" with-libzstd-dir="/usr"'
方案2:临时规避(仅应急使用)
如果暂时不需要redis扩展的zstd压缩能力,可以在安装redis扩展的交互提示enable zstd compression support? [no] :时直接回车选择默认值no,即可跳过libzstd依赖检查完成安装,但该模式下redis扩展无法使用zstd压缩相关功能,后续有需求仍需补装依赖重新编译扩展。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

