我正在尝试在我的 Docker 容器中加载 intl PHP 扩展,但它似乎不起作用。
已经尝试过这个https://github.com/docker-library/php/issues/57但我仍然收到相同的错误消息:
configure: error: in `/usr/src/php/ext/intl':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details
我的 Docker 文件如下所示:
RUN apt-get -y update \
&& apt-get install -y libicu-dev\
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl
它正在从 php:fpm 加载
有人经历过这个并解决了问题吗?这让我抓狂。
当我在终止运行命令第二行的反斜杠之前添加一个空格时,你的代码对我来说非常适合:
RUN apt-get -y update \
&& apt-get install -y libicu-dev \ ### <-- Added space here
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl
似乎缺少一些要求。下面的代码片段对我有用:
ARG PHP_VERSION=5.6
FROM php:${PHP_VERSION}-fpm-jessie
apt-get install -y zlib1g-dev libicu-dev g++ \
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl
不幸的是,一些 php 扩展依赖于其他程序。有一个名为 docker-php-extension-installer 的项目,您可以使用它来安装 PHP 扩展。它将确保所需的依赖项也存在。请参阅 https://stackoverflow.com/a/56224300/413531 了解我如何将其实际集成到 Dockerfile 中的示例。
对于较旧的构建脚本,此问题可能是由 icu-devtools 最近删除了 icu-config 引起的。在 debian 上,可以通过降级 libicu-dev 和 icu-devtools 来修复:
apt-get install libicu-dev=57.1-6+deb9u4 icu-devtools=57.1-6+deb9u4
要确定可能适合您的特定版本,只需执行以下操作:
apt-cache policy libicu-dev
并选择最高~60 的版本。 icu-devtools 也一样。
我在尝试为 PHP 7.1 构建 docker 镜像时发现了这个问题。有关更多上下文,请查看 debian 错误报告 920900。