Erro fatal: Classe 'SoapClient' não encontrada

202

Estou tentando um exemplo simples de serviço da web e recebo esse erro, embora não tenha comentado extension=php_soap.dllno php.iniarquivo:

Erro fatal: Classe 'SoapClient' não encontrada em C: \ Arquivos de Programas (x86) \ EasyPHP-5.3.9 \ www \ server.php na linha 2

Figen Güngör
fonte
3
Tem certeza de que editou o Apache / bin / php.ini e reiniciou o apache depois disso?
Shubham
Obrigado. Aparentemente, mudei outro arquivo php.ini. Encontrei o arquivo Apache.
Figen Güngör
sudo apt-get install php7.0 para aqueles de vocês que não tenham instalado ainda
Fox McCloud

Respostas:

353

Diagnosticar

Procure o seguinte dentro do seu arquivo de script

phpinfo();

Se você não conseguir Soap Clientdefinir o conjunto da seguinte enabledforma: a maneira como o sabão deve aparecer em phpinfo ()

Consertar

Faça o seguinte:

  1. Localize php.inina pasta apache bin, ou seja,Apache/bin/php.ini
  2. Remova o ;do início deextension=php_soap.dll
  3. Reinicie seu servidor Apache
  4. Procure seu phpinfo(); novamente o e verifique se você vê uma imagem semelhante à acima
  5. Se sim, problema resolvido!

Por outro lado, se isso não resolver o seu problema, convém verificar os requisitos para SOAP aqui . Também na seção de comentários, você pode encontrar bons conselhos sobre como conectar-se a https.

Morgan Wilde
fonte
12
Não se esqueça de também descomente esta linha: ;extension=php_openssl.dll se o WSDL que você está tentando alcançar está sob o protocolo https
juliangonzalez
no meu caso não foi instalado e não há extensão = php_soap.dll na php.in hum usando php5.6 centos6.9
Zero8
7
Estou usando o xamp e apenas descomentando extension=soapo truque.
SAMPro
3
sudo apt-get install php7.0-sabão para aqueles de vocês que não tenham instalado ainda
Fox McCloud
1
Para mim, a SoapClientturma ainda não foi encontrada. Eu o vejo habilitado no phpinfo (), a extensão está habilitada, o openssl também está habilitado, está tudo bem, mas a classe não foi encontrada. Eu uso o Wampserver 3.0 e o PHP 5.6 e reiniciei o Apache, mas não resolve o problema. Por favor ajude.
Eve
149

Para instalar o SOAP no PHP-7, execute o seguinte no seu terminal Ubuntu:

sudo apt-get install php7.0-soap

Para instalar o SOAP no PHP-7.1, execute o seguinte no seu terminal Ubuntu:

sudo apt-get install php7.1-soap

Para instalar o SOAP no PHP-7.2, execute o seguinte no seu terminal Ubuntu:

sudo apt-get install php7.2-soap

Para instalar o SOAP no PHP-7.3, execute o seguinte no seu terminal Ubuntu:

sudo apt-get install php7.3-soap
Nahid
fonte
11
Também certifique-se de executar sudo recarga apache2 serviço
Steve Obbayi
9
No meu caso, foisudo apt-get install php-soap
dhcgn
i tinha atualizado para php7 e tinha esquecido para reinstalar php70w-sabão (i sempre remover completamente versão antiga do PHP)
ZZAPPER
1
O que fazer se eu quiser instalar o php7.3-soap :-)? Eu estou perdido.
Chris18 /
@chris você tentou:sudo apt-get install php7.2-soap
Nahid
21

Para AWS (RHEL):

sudo yum install php56-soap

(56 aqui é a versão 5.6 do PHP - coloque sua versão aqui).

OZ_
fonte
3
Isso pode ser sudo yum install php56w-soap! Eu esqueci o w, e isso instala, e ainda não funcionou. Demorou um pouco para descobrir isso, mas agora funciona.
SPRBRN
1
Para mim, foi o sudo apt-get install php5.6-soap
Sukeshini
1
Não há necessidade de versão, apenas php-soap
ampachts
15

Para instalar o SOAP no PHP5.6, execute o seguinte no seu terminal Ubuntu 14.04:

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

Veja se o SOAP foi ativado:

php -m

(Você deve ver SOAP entre o texto retornado.)

Jasom Dotnet
fonte
11

Eu tive que correr

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

como root e reinicie o apache.

Isso funcionou! Agora minha chamada phpinfo () mostra a seção SOAP.

MayTheSForceBeWithYou
fonte
1
rebootdeve-se mencionar que sua reinicialização apache, não a reinicialização do servidor.
precisa
8

Como não encontrei a SOAPseção, phpinfo()tive que instalá-la.

Para informações, a SOAPextensão requer a libxmlextensão PHP. Isso significa que a transferência --enable-libxmltambém é necessária, de acordo com http://php.net/manual/en/soap.requirements.php

No painel WHM

  1. Software »Instaladores de Módulos» Extensões PHP e Pacote de Aplicativos
  2. Instale o SOAP 0.13.0

    AVISO: "pear / HTTP_Request" foi preterido em favor de "pear / HTTP_Request2"

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

  3. Instale HTTP_Request2 (opcional)

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

  4. Reinicie os serviços »Servidor HTTP (Apache)

Comando shell

1.pear instalar SOAP

2.reboot

RafaSashi
fonte
A interface EasyApache do WHM também tem uma opção para ativar o Soap na lista Opções Exaustivas.
Andrew
8

Resolvi esse problema no 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
fonte
3

Para o Docker *, adicione esta linha:

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

*: Para imagens baseadas em debian, ie. não funcionará para variantes alpinas.

Attila Fulop
fonte
1

Para usuários do XAMPP , abra o php.iniarquivo localizado C:/xampp/phpe remova-o ;do início de extension=soap. Então reinicie o Apache e pronto!

Jakub Adamec
fonte
0

Você precisa herdar a nusoap.phpclasse e colocá-la no diretório do projeto, pode fazer o download da Internet .

Use este código:

require_once('nusoap.php');
Wondie
fonte
2
O NuSoap cria um serviço da Web (servidor). A questão inicial é para consumir uma WebService (cliente), de modo que não há relação entre NuSoap e o problema mencionado
Carlos B. Feitoza Filho
talvez você esteja pensando em algo no momento de trabalhar com o nusoap e por isso o cemitério.
precisa saber é
"A Internet."
Attila Fulop
0

No Centos 7.8 e PHP 7.3

yum install php-soap
service httpd restart
PJunior
fonte