Мне не удалось заставить мыло работать с моей настройкой php Docker.
Я использую Docker CE для Windows версии 18.03.1-ce-win65 (17513). Версия PHP 7.2.3
Я пробовал работать из контейнера apt-get install php-soap
, в результате
Чтение списков пакетов ... Готово
Построение дерева зависимостей
Чтение информации о состоянии ... Готово
*
Пакет php-soap - это виртуальный пакет, предоставляемый:
* php7.0-soap 7.0.27-0 + deb9u1 [Версия не кандидат] *
E: Пакет 'php-soap' не имеет кандидата на установку
Запуск docker-php-ext-install soap
приводит к ошибке configure: error: libxml2 not found. Пожалуйста, проверьте вашу установку libxml2.
Однако, глядя на информацию о php, я вижу следующее: Версия libxml2 => 2.9.4
Вам нужно будет установить libxml2-dev как часть вашего файла докеров, образ сведен к минимуму и не включает все биты, необходимые для каждого модуля. Хотя в образе может быть основной пакет, пакет -dev включает компоненты, необходимые для компиляции других модулей, которые на него полагаются ...
RUN apt-get update && \
apt-get install -y libxml2-dev
(От https://github.com/docker-library/php/issues/315)
Чтобы было понятно - команда
RUN docker-php-ext-install soap
затем успешно запустится для установки библиотеки мыла.
Спасибо. Но будет ли это работать только как часть сборки докера? Я уже запускал это в контейнере, и phpinfo предполагает, что он уже установлен.
У вас должна быть возможность войти в контейнер и запустить установку apt-get. При установке добавляется пакет -dev, отличный от того, который используется самим PHP exe.
Никогда не пробовал запускать docker-php-ext-install soap
в контейнере, поэтому было бы интересно, запустится ли он.
Это выходит за рамки данного репо.
Вы должны получить это с помощью такого подхода:
RUN apt-get update -y \
&& apt-get install -y \
libxml2-dev \
php-soap \
&& apt-get clean -y \
&& docker-php-ext-install soap
в этом случае php-soap
вернет ошибку, потому что в php7.2 такого пакета нет
Для меня, работая с PHP 7.3.2, другие решения не работали.
И "php-soap", и "php7.3-soap" получили ошибку "phpXXX-soap не имеет кандидата на установку".
Один «docker-php-ext-install soap» хотел «libxml2-dev», поэтому я просто установил необходимое:
FROM php:7.3
RUN apt-get update -y \
&& apt-get install -y \
libxml2-dev \
&& apt-get clean -y \
&& docker-php-ext-install soap
... и это прекрасно сработало.
Я получаю сообщение об ошибке ERROR: Module soap does not exist!
при попытке сделать это с FROM php:7.3-apache-stretch
всякий раз, когда вы настраиваете и получаете такую ошибку, вам понадобится пакет "-dev"