У меня есть приложение, работающее в режиме CLI на сервере, которому не нужно и не нужно запускать локальный httpd. Приложение выполняет исходящие взаимодействия с поставщиком веб-сервисов с использованием SOAP. У поставщика, о котором идет речь, есть некоторые проблемы с доступностью, и мы пытаемся уменьшить количество проблем, размещая файл WSDL локально по их предложению.
Похоже, что конструктор SoapClient (в режиме WSDL) может использовать только файл URI WSDL, но я пытаюсь выяснить, каким образом можно обойти это ограничение и попросить его каким-то образом прочитать файл WSDL из локальной файловой системы. Я удивлен тем, что конструктор SoapClient не имеет возможности передать имя файла или строку текста, которую я мог бы просто прочитать ранее.
Кто-нибудь получил предложение о том, как обойти это ограничение и делать то, что я пытаюсь?
SoapClient()
принимает URI, который поддерживает не только веб-адреса, но и локальные пути к файлам. Но относительные пути здесь не работают, поэтому это должен быть полный путь к файлу.
Вот как загрузить локальный файл WSDL с относительной ссылкой. Если WSDL находится в том же каталоге, что и текущий файл PHP:
new SoapClient(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'the.wsdl.xml');
или если он находится в подпапке текущего файла PHP:
new SoapClient(dirname(__FILE__) . DIRECTORY_SEPARATOR. 'subfolder' . DIRECTORY_SEPARATOR . 'the.wsdl.xml');