Błąd krytyczny: nie znaleziono klasy „SoapClient”


202

Próbuję prostego przykładu usługi sieci Web i pojawia się ten błąd, mimo że odkomentowałem extension=php_soap.dllw php.inipliku:

Błąd krytyczny: nie znaleziono klasy „SoapClient” w C: \ Program Files (x86) \ EasyPHP-5.3.9 \ www \ server.php w linii 2


3
Czy na pewno edytowałeś Apache / bin / php.ini i ponownie uruchomiłeś Apache?
Shubham,

Dziękuję Ci. Podobno zmieniłem inny plik php.ini. Znalazłem ten w pliku Apache.
Figen Güngör

sudo apt-get install php7.0 dla tych, którzy jej nie zainstalowano jeszcze
FoxMcCloud

Odpowiedzi:


353

Rozpoznać chorobę

Sprawdź następujące elementy w pliku skryptu

phpinfo();

Jeśli nie możesz znaleźć takiego Soap Clientzestawu enabled: sposób, w jaki mydło powinno pojawiać się w phpinfo ()

Naprawić

Wykonaj następujące czynności:

  1. Znajdź php.iniw folderze bin Apache , tjApache/bin/php.ini
  2. Usuń ;początekextension=php_soap.dll
  3. Uruchom ponownie serwer Apache
  4. Spójrz phpinfo();ponownie i sprawdź, czy widzisz zdjęcie podobne do powyższego
  5. Jeśli tak, problem rozwiązany!

Z drugiej strony, jeśli to nie rozwiąże problemu, możesz tutaj sprawdzić wymagania dotyczące SOAP . Również w sekcji komentarzy można znaleźć dobre porady na temat łączenia się z https.


12
Nie zapomnij też odkomentować tej linii: ;extension=php_openssl.dll jeśli WSDL, do którego próbujesz dotrzeć, jest objęte protokołem https
juliangonzalez

w moim przypadku nie został zainstalowany i nie ma rozszerzenia = php_soap.dll w php.in um przy użyciu php5.6 centos6.9
zero8

7
Używam Xampa i po prostu odkomentuj extension=soap.
SAMPro

3
sudo apt-get install php7.0 mydła dla tych, którzy jej nie zainstalowano jeszcze
FoxMcCloud

1
Dla mnie SoapClientnadal nie znaleziono klasy. Widzę, że jest włączony w phpinfo (), rozszerzenie jest włączone, openssl jest również włączony, wszystko jest w porządku, ale nie znaleziono klasy. Używam Wampserver 3.0 i PHP 5.6 i zrestartowałem Apache, ale nie rozwiązałem problemu. Proszę pomóż.
Ewa,

149

Aby zainstalować SOAP w PHP-7, uruchom w terminalu Ubuntu:

sudo apt-get install php7.0-soap

Aby zainstalować SOAP w PHP-7.1, uruchom w terminalu Ubuntu:

sudo apt-get install php7.1-soap

Aby zainstalować SOAP w PHP-7.2, uruchom w terminalu Ubuntu:

sudo apt-get install php7.2-soap

Aby zainstalować SOAP w PHP-7.3, uruchom w terminalu Ubuntu:

sudo apt-get install php7.3-soap

11
Upewnij się również, aby uruchomić sudo service apache2 reload
Steve Obbayi

9
W moim przypadku było tosudo apt-get install php-soap
dhcgn

uaktualniłem do php7 i zapomniałem ponownie zainstalować php70w-mydło (zawsze całkowicie
usuwam

1
Co zrobić, jeśli chcę zainstalować mydło php7.3 :-)? Zgubiłem się.
Chris

@chris próbowałeś:sudo apt-get install php7.2-soap
Nahid

21

W przypadku AWS (RHEL):

sudo yum install php56-soap

(56 tutaj to wersja PHP 5.6 - umieść tutaj swoją wersję).


3
To może być sudo yum install php56w-soap! Zapomniałem w, a to instaluje, a mimo to nie działało. Długo to zrozumiałem, ale teraz działa.
SPRBRN

1
Dla mnie był to sudo apt-get install php5-mydło
Sukeshini

1
Nie ma potrzeby wersji, tylko mydło php
ampachty

15

Aby zainstalować SOAP w PHP5.6, uruchom w terminalu Ubuntu 14.04:

sudo apt-get install php5.6-soap
service php5.6-fpm restart
service apache2 restart

Sprawdź, czy protokół SOAP został włączony:

php -m

(Powinieneś zobaczyć SOAP między zwróconym tekstem.)


11

Musiałem biec

php-config --configure-options --enable-soap 

jako root i uruchom ponownie apache.

To się udało! Teraz moje wywołanie phpinfo () pokazuje sekcję SOAP.


1
rebootnależy wspomnieć, że jego restart Apache, a nie restart serwera.
machineaddict

8

Nie mogę znaleźć tej SOAPsekcji, phpinfo()więc musiałem ją zainstalować.

Aby uzyskać informacje, SOAProzszerzenie wymaga libxmlrozszerzenia PHP. Oznacza to, że przekazywanie danych --enable-libxmljest również wymagane zgodnie z http://php.net/manual/en/soap.requirements.php

Z panelu WHM

  1. Oprogramowanie »Instalatory modułów» Pakiet rozszerzeń i aplikacji PHP
  2. Zainstaluj SOAP 0.13.0

    OSTRZEŻENIE: „pear / HTTP_Request” jest przestarzałe na korzyść „pear / HTTP_Request2”

    zainstaluj ok: channel: //pear.php.net/SOAP-0.13.0

  3. Zainstaluj HTTP_Request2 (opcjonalnie)

    zainstaluj ok: channel: //pear.php.net/HTTP_Request2

  4. Uruchom ponownie usługi »Serwer HTTP (Apache)

Z polecenia powłoki

1. gruszka zainstaluj SOAP

2. uruchom ponownie


Interfejs EasyApache WHM ma również opcję włączenia Mydła na liście Wyczerpujące Opcje.
Andrew

8

Rozwiązałem ten problem na PHP 7.0.22-0ubuntu0.16.04.1 nginx

sudo apt-get install php7.0-soap

sudo systemctl restart php7.0-fpm
sudo systemctl restart nginx

3

W przypadku Dockera * dodaj ten wiersz:

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

*: Dla obrazów opartych na Debianie, tj. nie będzie działać w przypadku wariantów alpejskich.


1

W przypadku użytkowników XAMPP otwórz php.iniplik znajdujący się w C:/xampp/phpi usuń ;od początku extension=soap. Następnie uruchom ponownie Apache i to wszystko!


0

Musisz odziedziczyć nusoap.phpklasę i umieścić ją w katalogu projektu, możesz pobrać ją z Internetu .

Użyj tego kodu:

require_once('nusoap.php');

2
NuSoap utwórz usługę sieci Web (serwer). Początkowe pytanie dotyczy korzystania z usługi WebService (klienta), więc nie ma związku między NuSoap a wspomnianym problemem
Carlos B. Feitoza Filho

być może myślałeś coś w momencie pracy z nusoap, dlatego to utrwaliłeś.
zero8

„Internet”.
Attila Fulop

0

Na Centos 7.8 i PHP 7.3

yum install php-soap
service httpd restart
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.