PHP intl расширение в контейнере Docker

Я пытаюсь загрузить расширение intl PHP в мой контейнер Docker, но, похоже, оно не работает.

Уже пробовал это 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

Кто-нибудь прошел через это и должен решить проблему? Это сводит меня с ума.

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

Кажется, некоторые требования отсутствуют. Фрагмент ниже работал для меня:

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 зависят от других программ. Существует проект под названием https://github.com/mlocati/docker-php-extension-installer, который вы можете использовать для установки расширений PHP. Это обеспечит наличие необходимых зависимостей. См. /questions/12318217/ustanovka-gd-v-docker/49380172#49380172 для примера того, как я фактически интегрирую его в 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. Для получения дополнительных сведений см. Отчет об ошибке debian 920900.

Другие вопросы по тегам