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.