使用 bookworm 在 Docker 中为 PHP8.1 添加 Memcached 支持时出现问题

Luc*_*chi 2 php memcached libmemcached docker

我有一个Dockerfile依赖PHP:8.1-apache,已经运行了几个月了。

一旦PHP:8.1-apache开始使用 Debian bookworm,memcached 客户端在构建镜像时就开始出错。

涉及的行Dockerfile

FROM php:8.1-apache

...

RUN apt-get update --fix-missing -q \
    && apt-get install -y curl mcrypt gnupg build-essential software-properties-common wget vim zip unzip libxml2-dev libz-dev libpng-dev libmemcached-dev \
    && pecl install memcached \
    && docker-php-ext-enable memcached \

...
Run Code Online (Sandbox Code Playgroud)

图像构建时的错误是:

checking for libmemcached location... configure: error: memcached support requires libmemcached. Use --with-libmemcached-dir=<DIR> to specify the prefix where libmemcached headers and library are located
ERROR: `/tmp/pear/temp/memcached/configure --with-php-config=/usr/local/bin/php-config --with-libmemcached-dir=no --with-zlib-dir=no --with-system-fastlz=no --enable-memcached-igbinary=no --enable-memcached-msgpack=no --enable-memcached-json=no --enable-memcached-protocol=no --enable-memcached-sasl=yes --enable-memcached-session=yes' failed
Run Code Online (Sandbox Code Playgroud)

固定旧稳定版本可以解决问题,

FROM php:8.1-apache-bullseye

这清楚地表明该问题是由切换到新的 Debian 版本引起的。

可以做什么来使用bookworm并继续使用相同的库和流程?

Wir*_*lue 5

确保安装了这些库(特别是libssl-dev):

RUN apt install -y libmemcached-dev zlib1g-dev libssl-dev
Run Code Online (Sandbox Code Playgroud)

感谢 AKorezin:https://github.com/php-memcached-dev/php-memcached/issues/541#issuecomment-1624041385

然后您可以按照通常的 PECL 安装过程进行操作:

RUN yes '' | pecl install -f memcached-3.2.0 \
  && docker-php-ext-enable memcached
Run Code Online (Sandbox Code Playgroud)