SOAP (Simple Object Access Protocol) — представляет собой простой протокол основанный на XML, позволяет обмениваться информацией между распределенными приложениями. На практике может использоваться для разных задач. Одни из популярных это интеграция приложений с внешними службами. В моем случае потребовалось интегрировать веб-приложение системой 1C, для получения актуальной информации в режиме реального времени из базы данных 1C по запросу пользователя на сайте. На самом деле SOAP умеет работать с множеством протоколов прикладного уровня, среди которых SMTP, FTP, HTTP, HTTPS, а так же др. На первых порах SOAP главным образом предназначался для реализации удаленного вызова процедур, или как его ещё сокращенно именуют RPC. Сегодня он используется произвольно, для обмена данными в формате XML.
Базовая конфигурация PHP обычно не включает в себе такие модули, и при попытке обращаться к специализированным классам для работы с SOAP сервером, приходилось наблюдать сообщение об ошибке, что-то вроде этого:
Fatal error: Class ‘SoapClient’ not found
Это уже пол дела, так как мы уже знаем, что у нас нету класса SoapClient. Чтобы это дело заработало, необходимо к интерпретатору PHP прикрутить модуль Soap Client, который собственно и даст возможность работать с SOAP.
Тут вам потребуется доступ с правами root на сервер, чтобы сделать нужные операции. Если вы пользуетесь хостингом, где у вас нет таких полномочий, то попросите администраторов хостинга, скорее всего им не составит большого труда выполнить эти операции.
В моем же случае использовалась система CentOS. На ней установлена традиционная связка LAMP, которую можно повстречать на многих других веб-серверах. Установка простая, и типична для систем CentOS Linux. Итак, мы авторизовались в системе под root, далее посредством менеджера пакетов YUM мы будем устанавливать php soap.
Устанавливаем пакет php soap
# yum install php-soap
После выполнения команды вам будет показана информация о пакете, который планируется установить в систему, и вас так же попросят подтвердить начало установки:
Is this ok [y/N]: y
После ввода команды «y», а это говорит о том, что вы подтверждаете установку, начнется процедура скачивания и установки пакета из репозитория. После установки php soap необходимо так же перезапустить веб сервер, в нашем случае это httpd. Это позволит веб-серверу подгрузить изменения в конфигурации.
Перезагружаем веб-сервер httpd
# service httpd restart
Теперь можно проверить наличие нужного нам компонента для работы с SOAP, чтобы убедиться, что он установлен.
Проверяем наличие SOAP в PHP
# php -m | grep -i soap
В результате выполнения команды, вы должны увидеть строку с надписью «soap», это говорит о том, что он уже есть. Кроме того проверить его наличие так же можно выполнив обращения к классу модуля из самих скриптов, если это не затруднительно, если скрипты отрабатывают, то это означает что библиотека установлена.