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并继续使用相同的库和流程?
确保安装了这些库(特别是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)