Фатальна помилка: Клас "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 та перезапустили апаш ??
Шубхем,

Дякую. Мабуть, я змінив ще один файл php.ini. Я знайшов цю у файлі Apache.
Figen Güngör

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

Відповіді:


353

Діагностувати

Знайдіть у файлі сценарію наступне

phpinfo();

Якщо ви не можете знайти Soap Clientбезліч , щоб enabledвиглядати приблизно так: те, як мило повинно з’являтися у phpinfo ()

Виправити

Зробіть наступне:

  1. Знайдіть php.iniу вашому апача бен папку, тобто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
zero8

7
Я використовую 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
Стів Оббай

9
У моєму випадку це булоsudo apt-get install php-soap
dhcgn

я перейшов до php7 і забув перевстановити php70w-soap (я завжди повністю
видаляю

1
Що робити, якщо я хочу встановити php7.3-soap :-)? Я загубився.
chris

@chris ти спробував:sudo apt-get install php7.2-soap
Nahid

21

Для AWS (RHEL):

sudo yum install php56-soap

(56 тут версія 5.6 PHP - поставте свою версію тут).


3
Це може бути sudo yum install php56w-soap! Я забув w, і це встановлюється, і досі воно не працювало. Щоб розібратися в цьому, знадобилося деякий час, але зараз це працює.
SPRBRN

1
Для мене це sudo apt-get install php5.6-soap
Sukeshini

1
Немає необхідності у версії, просто php-soap
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, а не перезавантаження сервера.
машинобудівний вирок

8

Я не можу знайти цей SOAPрозділ, phpinfo()тому мені довелося його встановити.

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

З панелі WHM

  1. Програмне забезпечення »Установки модулів» Пакет розширень та додатків PHP
  2. Встановіть SOAP 0.13.0

    УВАГА: "груша / HTTP_Request" застаріла на користь "груша / HTTP_Request2"

    встановити ok: канал: //pear.php.net/SOAP-0.13.0

  3. Встановити HTTP_Request2 (необов’язково)

    встановити ok: канал: //pear.php.net/HTTP_Request2

  4. Послуги перезапуску »HTTP-сервер (Apache)

З команди оболонки

1.початку встановити SOAP

2.перезавантажити


Інтерфейс EasyApache WHM також має можливість включення Soap у списку Exhaustive Options.
Андрій

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 та згаданою проблемою немає зв’язку
Carlos B. Feitoza Filho

можливо ви, де щось думаєте в момент роботи з нусоапом, саме тому ви це це цементували.
нуль8

"Інтернет."
Аттіла Фулоп

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.