Soap für PHP im Docker-Container aktivieren

Lesezeit: 3 Minuten

Ich war nicht in der Lage, Seife mit meinem PHP-Docker-Setup zum Laufen zu bringen.

Ich verwende Docker CE für Windows Version 18.03.1-ce-win65 (17513). PHP-Version 7.2.3

Ich habe versucht, aus dem Container heraus zu laufen apt-get install php-soap was in … endet
Paketlisten lesen… Fertig

Abhängigkeitsbaum erstellen

Zustandsinformationen lesen… Fertig
*
Paket php-soap ist ein virtuelles Paket, bereitgestellt von:
* php7.0-Soap 7.0.27-0+deb9u1 [Not candidate version]*

E: Paket „php-soap“ hat keinen Installationskandidaten

Betrieb docker-php-ext-install soap
ergibt den Fehler configure: error: libxml2 not found. Bitte überprüfen Sie Ihre libxml2-Installation.

Wenn ich mir jedoch die PHP-Informationen ansehe, sehe ich Folgendes:
libxml2-Version => 2.9.4

  • Wann immer Sie beim Konfigurieren diese Art von Fehler erhalten, benötigen Sie das “-dev”-Paket

    – Farkie

    1. Mai 2018 um 18:26 Uhr

Benutzeravatar von Nigel Ren
Nigel Ren

Sie müssen libxml2-dev als Teil Ihrer Dockerdatei installieren, das Image ist auf ein Minimum beschränkt und enthält nicht alle Bits, die von jedem Modul benötigt werden. Obwohl das Image möglicherweise das Hauptpaket enthält, enthält das -dev-Paket die Komponenten, die zum Kompilieren anderer Module erforderlich sind, die darauf angewiesen sind …

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

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

Nur um es klarzustellen – der Befehl

RUN docker-php-ext-install soap

wird dann erfolgreich ausgeführt, um die Soap-Bibliothek zu installieren.

  • Vielen Dank. Funktioniert das aber nur als Teil des Docker-Builds? Ich habe das bereits im Container ausgeführt und die phpinfo schlägt vor, dass es bereits installiert ist.

    – SpaghettiCodee

    1. Mai 2018 um 18:55 Uhr

  • Sie sollten sich beim Container anmelden und apt-get install ausführen können. Die Installation fügt das -dev-Paket hinzu, das sich von dem unterscheidet, das von der PHP-Exe selbst verwendet wird.

    – Nigel Ren

    1. Mai 2018 um 18:56 Uhr

  • Nie versucht zu laufen docker-php-ext-install soap im Container, würde mich also interessieren ob das läuft.

    – Nigel Ren

    1. Mai 2018 um 18:57 Uhr

  • Für Alpine-basierte Container sollte der erste Befehl lauten: apk update && apk add libxml2-dev

    – Hamid Rohani

    13. August um 14:39 Uhr

Für mich, die mit PHP 7.3.2 arbeiteten, funktionierten die anderen Lösungen nicht.

Sowohl „php-soap“ als auch „php7.3-soap“ haben den Fehler „phpXXX-soap has no installation Candidate“ erhalten.

Alleine “docker-php-ext-install soap” wollte die “libxml2-dev”, also habe ich nur das Nötigste installiert:

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

… und es hat wunderbar funktioniert.

  • Ich bekomme den Fehler ERROR: Module soap does not exist! wenn Sie dies mit versuchen FROM php:7.3-apache-stretch

    – Novocain

    28. August 2019 um 13:10 Uhr

Die richtige Antwort wurde gegeben, aber für mich musste ich auch aktivieren (docker-php-ext-enable-Seife) das Seifenmodul, also für Falls jemand nützlich sein könnte:

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 ...

Dies liegt außerhalb des Geltungsbereichs dieses Repos.

Sie sollten es über diesen Ansatz erhalten:

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

1404790cookie-checkSoap für PHP im Docker-Container aktivieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy