我在尝试安装和启用PHP soap扩展时遇到问题。我正在Docker容器中运行基本映像php:7.2-fpm-alpine3.6
,该容器在Dockerfile
中有如下所示的指令。我不清楚如何在Alpine上安装扩展程序。它似乎使用docker-php-ext-install
来推断。
Dockerfile
(我从某个地方采用了这个):
RUN apk --no-cache add \
freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev \
wget \
git \
nginx \
ca-certificates \
supervisor \
bash \
nano \
&& docker-php-ext-install \
mysqli \
pdo_mysql \
opcache \
...
所以,我试过
docker-php-ext-install soap
告诉我configure: error: xml2-config not found. Please check your libxml2 installation.
我试了很多东西,但是
apk add --no-cache libxml2-dev
似乎做了些什么。我用docker-php-ext-install soap
再次跟进了这个,输出了
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp.la modules/* libs/*
此时,我没有运行make test
,因为我不清楚在哪里找到这个Makefile
。我在/usr/local/lib/php/extensions/no-debug-non-zts-20170718/
下搜索,soap.so
已经存在。此外,我的命令已经为PHP-FPM启用了它。 php -i
显示/usr/local/etc/php/conf.d/docker-php-ext-soap.ini,
。
我不完全确定我做了什么。这是(docker-php-ext-install
)如何在此操作系统上安装扩展程序?
答案 0 :(得分:1)
PHP SOAP扩展需要PHP XML扩展,如下所示:http://php.net/manual/en/soap.requirements.php
我希望你先安装它。
据推测docker-php-ext-install xml
。
您不应该自己编译XML库,因为它将成为扩展的一部分。
答案 1 :(得分:1)
我将成为希望以正确答案答复的好人 老实说,并非每个高山发行版都包含docker-php-ext命令等,而且我也不知道如何轻松添加它们,这看起来并不简单。
无论如何,发出此alpine install命令可以轻松安装任何php扩展名 找到任何PHP扩展名
"apk search -v 'php' |grep ldap"
结果
phpldapadmin-1.2.3-r4 - Web front-end for managing OpenLDAP
php7-ldap-7.2.22-r0 - PHP7 extension: LDAP
php5-ldap-5.6.40-r0 - ldap extension for PHP
要进一步安装扩展,必须以不带后缀版本部分的形式提供其名称,例如。 -7.2.22-r0
中没有php7-ldap-7.2.22-r0
,因此它是php7-ldap
像这样
apk install php7-ldap
答案 2 :(得分:1)
您可以使用this package
将实用程序添加到图像中示例:
FROM php:7.2-cli
ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/
RUN chmod uga+x /usr/local/bin/install-php-extensions && sync && \
install-php-extensions gd xdebug
如果需要,您可以删除最后一行,然后输入要添加包的容器。
docker exec -it <container_id> bash # (swap bash for sh if using alpine)
然后,您只需键入install-php-extensions <ext>
答案 3 :(得分:0)
解决方案是:
RUN set -ex && apk --no-cache add libxml2-dev
RUN docker-php-ext-install soap