Любое обходное решение для использования PHP SoapClient с локальным файлом WSDL (NON-URI)?

У меня есть приложение, работающее в режиме CLI на сервере, который не имеет и не должен запускать локальный httpd. Приложение выполняет исходящие взаимодействия с поставщиком веб-сервисов с использованием SOAP. У поставщика, о котором идет речь, есть некоторые проблемы с доступностью, и мы пытаемся уменьшить количество проблем, размещая файл WSDL локально по их предложению.

Похоже, что конструктор SoapClient (в режиме WSDL) может использовать только файл URI WSDL, но я пытаюсь выяснить, каким образом можно обойти это ограничение и прочитать его WSDL файл из локальной файловой системы в в некотором роде. Я удивлен, что конструктор SoapClient не имеет возможности передать имя файла или строку текста, которую я мог бы просто прочитать ранее.

Кто-нибудь получил предложение о том, как обойти это ограничение и делать то, что я пытаюсь?

Ответ 1

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');