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

202

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

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

Figen Güngör
источник
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
Nahid
источник
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 - поместите свою версию здесь).

OZ_
источник
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.

MayTheSForceBeWithYou
источник
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

RafaSashi
источник
В интерфейсе 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');
Wondie
источник
2
NuSoap создает веб-сервис (сервер). Первоначальный вопрос - использовать WebService (клиент), поэтому нет никакой связи между NuSoap и упомянутой проблемой
Карлос Б. Фейтоза Филхо
возможно, вы где-то думали в момент работы с nusoap, поэтому вы это закрепили.
ноль8
"Интернет."
Аттила Фулоп
0

На Centos 7.8 и PHP 7.3

yum install php-soap
service httpd restart
PJunior
источник