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

169

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

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

Теги:
soap
fatal-error

9 ответов

295
Лучший ответ

Диагностика

Посмотрите следующее в файле script

phpinfo();

Если вы не можете найти Soap Client для параметра enabled следующим образом: Изображение 31984

Fix

Выполните следующие действия:

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

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

  • 8
    Не забудьте также раскомментировать эту строку ;extension=php_openssl.dll если WSDL, к ;extension=php_openssl.dll вы пытаетесь обратиться, находится по протоколу https
  • 0
    спасибо очень полезно
Показать ещё 4 комментария
112

Чтобы установить 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
  • 7
    В моем случае это было sudo apt-get install php-soap
Показать ещё 5 комментариев
19

Для 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
Показать ещё 1 комментарий
14

Чтобы установить 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 между возвращенным текстом.)

10

Мне пришлось запускать

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

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

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

  • 1
    reboot должна быть упомянута, что его перезагрузка apache, не перезагрузка сервера.
  • 2
    @machineaddict, технически, любой из них будет работать ...
7

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

Я не могу найти раздел SOAP в phpinfo(), поэтому мне пришлось его установить.

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

С панели WHM

  • Программное обеспечение "Установщики модулей" Пакет расширений и приложений PHP
  • Установить SOAP 0.13.0

    ПРЕДУПРЕЖДЕНИЕ: "груша/HTTP_Request" устарела в пользу "груши/HTTP_Request2"

    установить ok: channel://pear.php.net/SOAP-0.13.0

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

    установить ok: channel://pear.php.net/HTTP_Request2

  • Перезапустить службы "HTTP-сервер (Apache)

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

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

2.reboot

  • 0
    Интерфейс EasyApache от WHM также имеет опцию включения Soap в списке исчерпывающих опций.
1

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

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

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

0

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

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

require_once('nusoap.php');
  • 2
    NuSoap создает веб-сервис (сервер). Первоначальный вопрос - использовать WebService (клиент), поэтому нет никакой связи между NuSoap и упомянутой проблемой
  • 0
    возможно, вы что-то думаете в момент работы с nusoap, поэтому вы это закрепили.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню