【问题标题】:PHP intl extension in Docker containerDocker 容器中的 PHP 国际扩展
【发布时间】:2018-07-18 08:42:03
【问题描述】:

我正在尝试在我的 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 加载的

有没有人经历过这个并解决了这个问题?这让我发疯了。

【问题讨论】:

    标签: php docker php-extension intl


    【解决方案1】:

    一旦我在终止运行命令的第二行的反斜杠之前添加了一个空格,您的代码就非常适合我:

    RUN apt-get -y update \
    && apt-get install -y libicu-dev \ ### <-- Added space here
    && docker-php-ext-configure intl \
    && docker-php-ext-install intl
    

    【讨论】:

      【解决方案2】:

      似乎缺少一些要求。下面的 sn-p 对我有用:

      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
      

      【讨论】:

        【解决方案3】:

        不幸的是,一些 php 扩展依赖于其他程序。有一个名为 docker-php-extension-installer 的项目,您可以使用它来安装 PHP 扩展。它将确保所需的依赖项也存在。有关我如何将其实际集成到 Dockerfile 中的示例,请参阅 https://stackoverflow.com/a/56224300/413531

        【讨论】:

        • 最佳答案!非常感谢!
        【解决方案4】:

        对于较旧的构建脚本,此问题可能是由 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 bug report 920900

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-01
          • 2018-03-26
          • 2015-03-04
          • 2015-07-26
          • 2017-12-01
          • 2018-03-21
          • 2012-09-05
          • 2014-06-20
          相关资源
          最近更新 更多