概要
EC-CUBEでSoap通信を行うまでの設定をまとめる。
ここでは、公式ドキュメントにあるDockerfileを変更してSoap Clientがenabledになるまでを記載する。
前提条件
dockerでローカル開発環境が構築されていること。
公式ドキュメント Docker Composeを使用してインストールする
現状
以下のコードを書いて実行するとエラーが発生する。
$client = new \SoapClient("wsdlファイルのパス");

おそらくこの記事にあるようにsoap通信する環境がないと推測。
参照記事
対応
コンテナ内に入ってphp-soap
をインストールする。
root@xxxxx:/var/www/html# apt-get install php-soap
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package php-soap is a virtual package provided by:
php7.0-soap 7.0.33-0+deb9u6 [Not candidate version]
php7.3-soap 7.3.14-1~deb10u1 [Not candidate version]
php7.3-soap 7.3.11-1~deb10u1 [Not candidate version]
E: Package 'php-soap' has no installation candidate
インストール候補がない、と言われる。
dockerで環境を構築するときに設定しないとだめみたいなので、設定してBuildする。
DockerFileを修正、再Build
こちらの記事を参考に、Dockerfileに以下を追加。
libxml2-dev
&& docker-php-ext-install soap
:
:
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
apt-transport-https \
apt-utils \
build-essential \
curl \
debconf-utils \
gcc \
git \
gnupg2 \
libfreetype6-dev \
libicu-dev \
libjpeg62-turbo-dev \
libpng-dev \
libpq-dev \
libzip-dev \
locales \
ssl-cert \
unzip \
zlib1g-dev \
libxml2-dev \ ※追加
&& apt-get clean \
&& docker-php-ext-install soap \ ※追加
&& rm -rf /var/lib/apt/lists/* \
&& echo "en_US.UTF-8 UTF-8" >/etc/locale.gen \
&& locale-gen \
;
:
:
再ビルド
$ docker-compose up -d --build
これだとmysqlのコンテナも作られてしまうので、
postgresを使っている場合は
docker-compose up -d --build ec-cube postgres mailcatcher
かもしれない