如何在Alpine 3.6上安装PHP soap扩展

时间:2018-02-06 18:44:50

标签: php linux soap alpine

我在尝试安装和启用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)如何在此操作系统上安装扩展程序?

4 个答案:

答案 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