Error fatal: no se encontró la clase 'SoapClient'

202

Estoy probando un ejemplo simple de servicio web y obtengo este error aunque no haya comentado extension=php_soap.dllen el php.iniarchivo:

Error fatal: la clase 'SoapClient' no se encuentra en C: \ Archivos de programa (x86) \ EasyPHP-5.3.9 \ www \ server.php en la línea 2

Figen Güngör
fuente
3
¿Está seguro de que editó Apache / bin / php.ini y reinició Apache después de eso?
Shubham
Gracias. Aparentemente, cambié otro archivo php.ini. Encontré el que está en el archivo Apache.
Figen Güngör
sudo apt-get install php7.0 para aquellos de ustedes que aún no lo han instalado
FoxMcCloud

Respuestas:

353

Diagnosticar

Busque lo siguiente dentro de su archivo de script

phpinfo();

Si no puede encontrar el Soap Clientconjunto que le enabledguste, así: la forma en que debería aparecer el jabón en phpinfo ()

Reparar

Haz lo siguiente:

  1. Ubique php.inien su carpeta de apache bin, es decirApache/bin/php.ini
  2. Eliminar el ;desde el principio deextension=php_soap.dll
  3. Reinicie su servidor Apache
  4. Mire hacia arriba phpinfo();nuevamente y verifique si ve una imagen similar a la de arriba
  5. Si lo haces, ¡problema resuelto!

Por otro lado, si esto no resuelve su problema, puede consultar los requisitos para SOAP aquí . También en la sección de comentarios puede encontrar buenos consejos sobre cómo conectarse a https.

Morgan Wilde
fuente
12
No olvides también descomentar esta línea: ;extension=php_openssl.dll si el WSDL que estás tratando de alcanzar está bajo el protocolo https
juliangonzalez
en mi caso no estaba instalado y no hay una extensión = php_soap.dll en php.in um usando php5.6 centos6.9
zero8
77
Estoy usando xamp y solo descomentar extension=soaphago el truco.
SAMPro
3
sudo apt-get install php7.0-soap para aquellos de ustedes que aún no lo han instalado
FoxMcCloud
1
Para mí, la SoapClientclase aún no se encuentra. Lo veo habilitado en phpinfo (), la extensión está habilitada, openssl también está habilitado, todo está bien pero no se encuentra la clase. Uso Wampserver 3.0 y PHP 5.6 y reinicié Apache, pero no resuelve el problema. Por favor ayuda.
Eva
149

Para instalar SOAP en PHP-7, ejecute lo siguiente en su terminal Ubuntu:

sudo apt-get install php7.0-soap

Para instalar SOAP en PHP-7.1, ejecute lo siguiente en su terminal Ubuntu:

sudo apt-get install php7.1-soap

Para instalar SOAP en PHP-7.2, ejecute lo siguiente en su terminal Ubuntu:

sudo apt-get install php7.2-soap

Para instalar SOAP en PHP-7.3, ejecute lo siguiente en su terminal Ubuntu:

sudo apt-get install php7.3-soap
Nahid
fuente
11
También asegúrese de ejecutar sudo service apache2 reload
Steve Obbayi
9
En mi caso fuesudo apt-get install php-soap
dhcgn
me actualicé a php7 y olvidé reinstalar php70w-soap (siempre elimino completamente la versión anterior de PHP)
zzapper
1
¿Qué hacer si quiero instalar php7.3-soap :-)? Estoy perdido.
Chris
@chris intentaste:sudo apt-get install php7.2-soap
Nahid
21

Para AWS (RHEL):

sudo yum install php56-soap

(56 aquí es la versión 5.6 de PHP - ponga su versión aquí).

ONZ_
fuente
3
Esto podría ser sudo yum install php56w-soap! Olvidé la w, y esto se instala, y aún así no funcionó. Me tomó un tiempo resolver esto, pero ahora funciona.
SPRBRN
1
Para mí fue sudo apt-get install php5.6-soap
Sukeshini
1
No hay necesidad de versión, solo php-soap
ampachts
15

Para instalar SOAP en PHP5.6 ejecute lo siguiente en su terminal Ubuntu 14.04:

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

Ver si SOAP estaba habilitado:

php -m

(Debería ver SOAP entre el texto devuelto).

Jasom Dotnet
fuente
11

Tuve que correr

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

como root y reiniciar apache.

¡Eso funciono! Ahora mi llamada phpinfo () muestra la sección SOAP.

MayTheSForceBeWithYou
fuente
1
rebootCabe mencionar que su reinicio de Apache, no el reinicio del servidor.
machineaddict
8

No pude encontrar la SOAPsección, phpinfo()así que tuve que instalarla.

Para información, la SOAPextensión requiere la libxmlextensión PHP. Esto significa que --enable-libxmltambién se requiere pasar de acuerdo con http://php.net/manual/en/soap.requirements.php

Desde el panel WHM

  1. Software »Instaladores de módulos» Paquete de extensiones y aplicaciones PHP
  2. Instalar SOAP 0.13.0

    ADVERTENCIA: "pear / HTTP_Request" está en desuso a favor de "pear / HTTP_Request2"

    instalar ok: canal: //pear.php.net/SOAP-0.13.0

  3. Instalar HTTP_Request2 (opcional)

    instalar ok: canal: //pear.php.net/HTTP_Request2

  4. Reiniciar servicios »Servidor HTTP (Apache)

Desde el comando de shell

1.pear instalar SOAP

2.reboot

RafaSashi
fuente
La interfaz EasyApache de WHM también tiene una opción para habilitar Soap en la lista de Opciones exhaustivas.
Andrew
8

Resolví este problema en 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
Nanhe Kumar
fuente
3

Para Docker * agregue esta línea:

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

*: Para imágenes basadas en Debian, es decir. no funcionará para variantes alpinas.

Attila Fulop
fuente
1

Para usuarios de XAMPP , abra el php.iniarchivo ubicado en C:/xampp/phpy elimine el ;desde el principio de extension=soap. Luego reinicia Apache y listo.

Jakub Adamec
fuente
0

Debe heredar la nusoap.phpclase y ponerla en el directorio de su proyecto, puede descargarla de Internet .

Usa este código:

require_once('nusoap.php');
Wondie
fuente
2
NuSoap crea un servicio web (servidor). La pregunta inicial es para consumir un WebService (cliente), por lo que no hay relación entre NuSoap y el problema mencionado
Carlos B. Feitoza Filho
tal vez estabas pensando en algo en el momento de trabajar con nusoap, por eso cementaste esto.
cero8
"La Internet."
Attila Fulop
0

En Centos 7.8 y PHP 7.3

yum install php-soap
service httpd restart
PJunior
fuente