Неустранимая ошибка: класс 'SoapClient' не найден


202

Я пытаюсь простой пример веб-службы, и я получаю эту ошибку, даже если я раскомментировал extension=php_soap.dllв php.iniфайле:

Неустранимая ошибка: класс «SoapClient» не найден в C: \ Program Files (x86) \ EasyPHP-5.3.9 \ www \ server.php в строке 2


3
Вы уверены, что отредактировали Apache / bin / php.ini и перезапустили apache после этого?
Шубхам

Спасибо. Я изменил другой файл php.ini. Я нашел один в файле Apache.
Фиген Гюнгёр

sudo apt-get install php7.0 для тех из вас, кто еще не установил его
FoxMcCloud

Ответы:


353

диагностики

Посмотрите следующее внутри вашего скрипта

phpinfo();

Если вы не можете найти Soap Clientзначение, enabledподобное: как мыло должно появляться в phpinfo ()

Fix

Сделайте следующее:

  1. Найдите php.iniв своей папке apache bin, т.е.Apache/bin/php.ini
  2. Удалить ;из началаextension=php_soap.dll
  3. Перезагрузите сервер Apache
  4. Посмотрите phpinfo();снова и проверьте, видите ли вы изображение, похожее на изображение выше
  5. Если это так, проблема решена!

С другой стороны, если это не решит вашу проблему, вы можете проверить требования для SOAP здесь . Также в разделе комментариев вы можете найти полезные советы по подключению к https.


12
Не забудьте также раскомментировать эту строку: ;extension=php_openssl.dll если WSDL, который вы пытаетесь достичь, находится по протоколу https
juliangonzalez

в моем случае он не был установлен, и в php.in um нет расширения = php_soap.dll, использующего php5.6 centos6.9
ноль8

8
Я использую xamp и просто раскомментирую extension=soap.
SAMPro

3
sudo apt-get install php7.0-soap для тех, кто еще не установил его
FoxMcCloud

1
Для меня SoapClientкласс до сих пор не найден. Я вижу, что он включен в phpinfo (), расширение включено, openssl тоже включен, все в порядке, но класс не найден. Я использую Wampserver 3.0 и PHP 5.6 и перезапустил Apache, но не решил проблему. Пожалуйста помоги.
Ева

149

Чтобы установить SOAP в PHP-7, выполните в своем терминале Ubuntu следующее:

sudo apt-get install php7.0-soap

Чтобы установить SOAP в PHP-7.1, выполните в своем терминале Ubuntu следующее:

sudo apt-get install php7.1-soap

Чтобы установить SOAP в PHP-7.2, выполните в своем терминале Ubuntu следующее:

sudo apt-get install php7.2-soap

Чтобы установить SOAP в PHP-7.3, выполните в своем терминале Ubuntu следующее:

sudo apt-get install php7.3-soap

11
Также обязательно запустите sudo service apache2 reload
Steve Obbayi

9
В моем случае это былоsudo apt-get install php-soap
dhcgn

я обновился до php7 и забыл переустановить php70w-soap (я всегда полностью
удаляю

1
Что делать, если я хочу установить php7.3-soap :-)? Я потерян.
Крис

@ Крис ты пробовал:sudo apt-get install php7.2-soap
Нахид

21

Для AWS (RHEL):

sudo yum install php56-soap

(56 здесь - 5.6 версия PHP - поместите свою версию здесь).


3
Это может быть sudo yum install php56w-soap! Я забыл w, и это устанавливает, и все же это не сработало. Потребовалось время, чтобы понять это, но теперь это работает.
СПРБРН

1
Для меня это было sudo apt-get install php5.6-soap
Sukeshini

1
Нет необходимости в версии, просто php-мыло
ampachts

15

Чтобы установить SOAP в PHP5.6, выполните в своем терминале Ubuntu 14.04 следующее:

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

Посмотрите, было ли включено SOAP:

php -m

(Вы должны увидеть SOAP между возвращенным текстом.)


11

Я должен был бежать

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

как root и перезапустите apache.

Это сработало! Теперь мой вызов phpinfo () показывает раздел SOAP.


1
rebootСледует отметить, что его перезагрузка apache, а не перезагрузка сервера.
Machineaddict

8

Я couln't найти в SOAPразделphpinfo() , так что я должен был установить его.

Для информации SOAPрасширение требует libxmlрасширения PHP. Это означает, что передача --enable-libxmlтакже требуется в соответствии с http://php.net/manual/en/soap.requirements.php

С панели WHM

  1. Программное обеспечение »Установщики модулей» Пакет расширений и приложений PHP
  2. Установите SOAP 0.13.0

    ВНИМАНИЕ: «pear / HTTP_Request» не рекомендуется в пользу «pear / HTTP_Request2»

    установить нормально: канал: //pear.php.net/SOAP-0.13.0

  3. Установить HTTP_Request2 (необязательно)

    установить нормально: канал: //pear.php.net/HTTP_Request2

  4. Перезапустите Сервисы »HTTP Сервер (Apache)

Из командной оболочки

1.pear установить SOAP

2.reboot


В интерфейсе EasyApache от WHM также есть опция включения Soap в списке исчерпывающих опций.
Андрей

8

Я решил эту проблему на 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

Для Docker * добавьте эту строку:

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

*: Для изображений на основе Debian, т.е. не будет работать для альпийских вариантов.


1

Для пользователей XAMPP откройте php.iniфайл, расположенный в, C:/xampp/phpи удалите его ;с начала extension=soap. Затем перезапустите Apache и все!


0

Вы должны унаследовать nusoap.phpкласс и поместить его в каталог вашего проекта, вы можете скачать его из Интернета .

Используйте этот код:

require_once('nusoap.php');

2
NuSoap создает веб-сервис (сервер). Первоначальный вопрос - использовать WebService (клиент), поэтому нет никакой связи между NuSoap и упомянутой проблемой
Карлос Б. Фейтоза Филхо

возможно, вы где-то думали в момент работы с nusoap, поэтому вы это закрепили.
ноль8

"Интернет."
Аттила Фулоп

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.