Habilitar jabón para php en el contenedor docker

3 minutos de lectura

No he podido hacer que el jabón funcione con mi configuración de php Docker.

Estoy usando Docker CE para Windows, versión 18.03.1-ce-win65 (17513). PHP versión 7.2.3

He intentado correr desde el interior del contenedor. apt-get install php-soap lo que resulta en
Leyendo listas de paquetes… Listo

Árbol de dependencias del edificio

Leyendo información de estado… Listo
*
El paquete php-soap es un paquete virtual proporcionado por:
* php7.0-soap 7.0.27-0+deb9u1 [Not candidate version]*

E: El paquete ‘php-soap’ no tiene ningún candidato de instalación

Correr docker-php-ext-install soap
da como resultado el error configure: error: libxml2 no encontrado. Verifique su instalación de libxml2.

Sin embargo, cuando miro la información de php, veo lo siguiente:
libxml2 Versión => 2.9.4

  • cada vez que está configurando y obtiene ese tipo de error, necesita el paquete “-dev”

    – Farkie

    1 mayo 2018 a las 18:26

avatar de usuario
nigel ren

Deberá instalar libxml2-dev como parte de su dockerfile, la imagen se mantiene al mínimo y no incluye todos los bits que necesita cada módulo. Aunque la imagen puede tener el paquete principal, el paquete -dev incluye los componentes necesarios para compilar otros módulos que dependen de él…

RUN apt-get update && \
    apt-get install -y libxml2-dev

(De https://github.com/docker-library/php/issues/315)

Solo para que quede claro: el comando

RUN docker-php-ext-install soap

luego se ejecutará correctamente para instalar la biblioteca de jabón.

  • Gracias. ¿Sin embargo, eso solo funcionará como parte de la construcción de la ventana acoplable? Ya lo ejecuté en el contenedor y phpinfo sugiere que ya está instalado.

    – Spaghetti Codee

    1 mayo 2018 a las 18:55

  • Debería poder iniciar sesión en el contenedor y ejecutar apt-get install. La instalación agrega el paquete -dev que es diferente al utilizado por el propio PHP exe.

    – Nigel Ren

    1 mayo 2018 a las 18:56

  • Nunca intenté correr docker-php-ext-install soap en el contenedor, por lo que estaría interesado si funciona.

    – Nigel Ren

    1 mayo 2018 a las 18:57

  • Para contenedores con base alpina, el primer comando debería ser: apk update && apk add libxml2-dev

    –Hamid Rouhani

    13 de agosto a las 14:39

Para mí, trabajando con PHP 7.3.2, las otras soluciones no funcionaron.

Tanto “php-soap” como “php7.3-soap” obtuvieron el error “phpXXX-soap no tiene ningún candidato de instalación”.

Solo “docker-php-ext-install soap” quería el “libxml2-dev”, así que simplemente instalé lo necesario:

FROM php:7.3
RUN apt-get update -y \
  && apt-get install -y \
     libxml2-dev \
  && apt-get clean -y \
  && docker-php-ext-install soap  

… y funcionó muy bien.

  • me sale el error ERROR: Module soap does not exist! al intentar esto con FROM php:7.3-apache-stretch

    – Novocaína

    28 de agosto de 2019 a las 13:10

Se hizo la respuesta correcta, pero para mí, también necesitaba habilitar (Jabón docker-php-ext-habilitar) el módulo de jabón, por lo que si alguien podría ser útil:

FROM php:7.4.24-apache

# your configurations ...

RUN apt-get update && \
    apt-get install -y libxml2-dev
RUN docker-php-ext-install soap && docker-php-ext-enable soap

# other configurations ...

Esto está fuera del alcance de este repositorio.

Debería obtenerlo a través de este enfoque:

RUN apt-get update -y \
  && apt-get install -y \
     libxml2-dev \
     php-soap \
  && apt-get clean -y \
  && docker-php-ext-install soap    

¿Ha sido útil esta solución?