Errore irreversibile: classe "SoapClient" non trovata


202

Sto provando un semplice esempio di servizio Web e ottengo questo errore anche se ho decommentato extension=php_soap.dllil php.inifile:

Errore irreversibile: classe 'SoapClient' non trovata in C: \ Programmi (x86) \ EasyPHP-5.3.9 \ www \ server.php sulla riga 2


3
Sei sicuro di aver modificato Apache / bin / php.ini e di aver riavviato Apache dopo ??
Shubham,

Grazie. Apparentemente, ho cambiato un altro file php.ini. Ho trovato quello nel file Apache.
Figen Güngör,

sudo apt-get install php7.0 per quelli di voi che non l'hanno ancora installato
FoxMcCloud

Risposte:


353

Diagnosticare

Cerca quanto segue nel tuo file di script

phpinfo();

Se non riesci a trovare il Soap Clientset enabledcosì: il modo in cui il sapone dovrebbe apparire in phpinfo ()

fix

Eseguire le seguenti operazioni:

  1. Individua php.ininella cartella del tuo cestino apache , vale a direApache/bin/php.ini
  2. Rimuovere ;dall'inizio diextension=php_soap.dll
  3. Riavvia il tuo server Apache
  4. Cerca il tuo phpinfo(); nuovo il e controlla se vedi un'immagine simile a quella sopra
  5. Se lo fai, problema risolto!

D'altra parte, se questo non risolve il problema, puoi verificare qui i requisiti per SOAP . Inoltre nella sezione commenti puoi trovare buoni consigli sulla connessione a https.


12
Non dimenticare di togliere il commento anche a questa riga: ;extension=php_openssl.dll se il WSDL che stai tentando di raggiungere è sotto il protocollo https
juliangonzalez

nel mio caso non è stato installato e non vi è alcuna estensione = php_soap.dll nel php.in um usando php5.6 centos6.9
zero8

7
Sto usando xamp e solo il commento extension=soapmi fa il trucco.
SAMPro

3
sudo apt-get install php7.0-soap per quelli di voi che non l'hanno ancora installato
FoxMcCloud

1
Per me, la SoapClientclasse non è ancora stata trovata. Lo vedo abilitato in phpinfo (), l'estensione è abilitata, anche openssl è abilitato, tutto è ok ma la classe non è stata trovata. Uso Wampserver 3.0 e PHP 5.6 e ho riavviato Apache ma non risolvo il problema. Per favore aiuto.
Vigilia,

149

Per installare SOAP in PHP-7, esegui quanto segue nel tuo terminale Ubuntu:

sudo apt-get install php7.0-soap

Per installare SOAP in PHP-7.1 esegui quanto segue nel tuo terminale Ubuntu:

sudo apt-get install php7.1-soap

Per installare SOAP in PHP-7.2, esegui quanto segue nel tuo terminale Ubuntu:

sudo apt-get install php7.2-soap

Per installare SOAP in PHP-7.3 eseguire nel terminale Ubuntu seguente:

sudo apt-get install php7.3-soap

11
Assicurati anche di eseguire sudo service apache2 ricaricare
Steve Obbayi

9
Nel mio caso erasudo apt-get install php-soap
dhcgn il

sono passato a php7 e ho dimenticato di reinstallare php70w-soap (rimuovo sempre completamente la vecchia versione di PHP)
zzapper

1
Cosa fare se voglio installare php7.3-soap :-)? Mi sono perso.
chris,

@chris hai provato:sudo apt-get install php7.2-soap
Nahid

21

Per AWS (RHEL):

sudo yum install php56-soap

(56 qui è la versione 5.6 di PHP - metti qui la tua versione).


3
Questo potrebbe essere sudo yum install php56w-soap! Ho dimenticato w, e questo si installa, eppure non ha funzionato. Ci è voluto un po 'per capirlo, ma ora funziona.
SPRBRN,

1
Per me è stato sudo apt-get install php5.6-soap
Sukeshini,

1
Non c'è bisogno della versione, solo php-soap
ampachts,

15

Per installare SOAP in PHP5.6, esegui quanto segue nel tuo terminale Ubuntu 14.04:

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

Verifica se SOAP è stato abilitato:

php -m

(Dovresti vedere SOAP tra il testo restituito.)


11

Ho dovuto correre

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

come root e riavvia apache.

Ha funzionato! Ora la mia chiamata phpinfo () mostra la sezione SOAP.


1
rebootva detto che il suo riavvio di Apache, non il riavvio del server.
machineaddict,

8

Non riuscivo a trovare la SOAPsezione, phpinfo()quindi ho dovuto installarla.

Per informazioni l' SOAPestensione richiede illibxml estensione PHP. Ciò significa che il passaggio --enable-libxmlè richiesto anche in base a http://php.net/manual/en/soap.requirements.php

Dal pannello WHM

  1. Software »Installatori di moduli» Pacchetto di estensione e applicazioni PHP
  2. Installa SOAP 0.13.0

    ATTENZIONE: "pear / HTTP_Request" è deprecato a favore di "pear / HTTP_Request2"

    installa ok: canale: //pear.php.net/SOAP-0.13.0

  3. Installa HTTP_Request2 (opzionale)

    installa ok: canale: //pear.php.net/HTTP_Request2

  4. Servizi di riavvio »HTTP Server (Apache)

Dal comando shell

1.pear installare SOAP

2.reboot


L'interfaccia EasyApache di WHM ha anche un'opzione per abilitare Soap nell'elenco Opzioni esaustive.
Andrew,

8

Ho risolto questo problema su 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

Per Docker * aggiungi questa riga:

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

*: Per immagini basate su debian, ad es. non funzionerà per le varianti alpine.


1

Per gli utenti XAMPP , aprire il php.inifile che si trova in C:/xampp/phpe rimuovere ;il dall'inizio extension=soap. Quindi riavvia Apache e il gioco è fatto!


0

Devi ereditare la nusoap.phpclasse e metterla nella directory del tuo progetto, puoi scaricarla da Internet .

Usa questo codice:

require_once('nusoap.php');

2
NuSoap crea un servizio Web (server). La domanda iniziale è per consumare un WebService (client), quindi non ci sono relazioni tra NuSoap e il problema menzionato
Carlos B. Feitoza Filho

forse dove stavi pensando qualcosa al momento di lavorare con nusoap, ecco perché l'hai citato.
zero8,

"La rete."
Attila Fulop,

0

Su Centos 7.8 e PHP 7.3

yum install php-soap
service httpd restart
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.