Принятый ответ работает, но только в режиме не-WSDL .Если вы попытаетесь использовать это в режиме WSDL (т.е. вы передадите URL-адрес файла WSDL в качестве первого аргумента), вы столкнетесь с тем фактом, что при загрузке файлов WSDL контекст потока игнорируется.Поэтому, если файл WSDL также находится на сервере с поврежденным сертификатом, он потерпит неудачу, и, скорее всего, выдаст сообщение failed to load external entity
.Подробнее здесь и здесь .
Как и предполагалось, самый простой способ - вручную загрузить файл WSDL и передать локальную копию SoapClient.Вы можете загрузить его, например, с помощью file_get_contents
, используя тот же контекст потока из принятого ответа.
Обратите внимание, что вам также придется делать это при создании SoapServer.