Я пытаюсь настроить PHP SoapClient для подключения к wsdl … CURL & WGET с сервера отлично работают.
Если я пытаюсь использовать soapclient, я получаю сообщения об ошибках ниже.
$wsdl = 'http://pav3.cdyne.com/PavService.svc?wsdl'; try { $client = new SoapClient($wsdl, array('trace' => true, 'exceptions' => true)); } catch (SoapFault $f) { echo $client->_getLastRequest(); echo $client->_getLastResponse(); echo $f->getMessage(); } catch (Exception $e) { echo $client->_getLastRequest(); echo $client->_getLastResponse(); echo $e->getMessage(); }
Я получаю сообщение об ошибке:
<br /><b>Warning</b>: SoapClient::SoapClient(http://pav3.cdyne.com/PavService.svc?wsdl) [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: failed to open stream: HTTP request failed! in <b>/coachflex/www/htdocs/CoachFlex/modules/other/checkAddress.php</b> on line <b>35</b><br /> <br /><b>Warning</b>: SoapClient::SoapClient() [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: I/O warning : failed to load external entity "http://pav3.cdyne.com/PavService.svc?wsdl" in <b>/coachflex/www/htdocs/CoachFlex/modules/other/checkAddress.php</b> on line <b>35</b><br />
Если я попытаюсь просто использовать fopen по указанному выше адресу, я получаю:
Предупреждение : fopen ( http://pav3.cdyne.com/PavService.svc?wsdl ) [function.fopen]: не удалось открыть поток: HTTP-запрос не удался! в /coachflex/www/htdocs/CoachFlex/modules/other/checkAddress.php в строке 37
Я просто не могу понять, почему я могу подключиться через curl / wget, но не через PHP. allow_url_fopen
установлено значение Вкл.
Я решил свою проблему. Это была проблема с моим брандмауэром. Брандмауэр удалял пакеты, отправленные через PHP, но с помощью curl или wget не удалялись. Я добавил правило для всего трафика с этого сервера и увеличил длину пакета, и теперь все работает отлично!
Эта страница указала мне в правильном направлении: http://www.radiotope.com/content/safari-and-sonicwall