У меня есть одна проблема в одном хосте: я не могу получить доступ к URL-адресу HTTP (скажем, http://foo-bar.com:9999/Path/To/My/Soap.svc?wsdl).
Попадание такого URL с моего локального хоста (под управлением PHP 5.4) работает нормально. Тем не менее, попадание такого URL с моего целевого сервера (под управлением PHP 5.5) приносит мне этот SoapFault:
Синтаксический анализ WSDL: не удалось загрузить из ‘http://foo-bar.com:9999/Path/To/My/Soap.svc?wsdl‘: не удалось загрузить внешнюю сущность «http://foo-bar.com:9999/Path/To/My/Soap.svc?wsdl«
(Я не раскрыл URL из-за политики контракта)
Что я могу проверить? (Поскольку URL-адрес не в HTTPS, а только в HTTP, openssl следует отбросить)
Код:
new SoapClient(
'http://foo-bar.com:9999/Path/To/My/Soap.svc?wsdl',
array('uri' => 'http://foo-bar.com/wsdl/schema/')
);
Нашел: в SOAP-клиенте нет ничего плохого между версиями PHP. Они остаются совместимыми между-как минимум -5,2 и 5,5. Так что здесь нет ничего странного для тестирования, кроме простых тестов соединения.
Такие вопросы должны быть проверены с: file_get_contents('http://foo-bar.com:9999/Path/To/My/Soap.svc?wsdl')
(в современных версиях PHP по умолчанию активен fopen_wrappers).
Ответ? В соединениях отказано. Вот почему я получаю такую ошибку.
Других решений пока нет …