Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: SOAP разное поведение на сервере и локалке
Форумы портала PHP.SU » » Вопросы новичков » SOAP разное поведение на сервере и локалке

Страниц (1): [1]
 

1. NeuroZ - 11 Ноября, 2016 - 14:24:19 - перейти к сообщению
Всем привет! Помогите, перегуглил уже 20 линков...
CODE (htmlphp):
скопировать код в буфер обмена
  1. try {
  2.         $soap = new SoapClient('http://www.avtoto.ru/services/search/soap.wsdl');
  3. } catch (SoapFault $e) {
  4.         print_r($e);
  5. }
  6. print_r ($soap->__getFunctions());

на локалке работает (выводит список доступных функций)
на сервере пишет ошибку:
Цитата:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.avtoto.ru/services/search/soap.wsdl' : failed to load external entity "http://www.avtoto.ru/services/search/soap.wsdl"

Очевидно, что дело в настройках сервера...
Но что в нем не так? SOAP конфиги выставлены на обоих серверах одинаковые.. Куда еще смотреть? Где-то натыкался, что кому-то помогает openssl (но при чем тут он?). Он включен и на локалке и на сервере, но на сервере openssl.cafile no value - является ли это причиной ошибки? Если да, то почему? А если нет, то как заставить SOAP нормально отрабатывать?
2. caballero - 11 Ноября, 2016 - 15:18:58 - перейти к сообщению
получите браузером wsdl с обоих сайтов и сравните на отличия
3. Мелкий - 11 Ноября, 2016 - 15:21:24 - перейти к сообщению
Дёрните с проблемной железки этот урл чем-нибудь более говорливым, curl'ом, wget'ом например. Вдруг у вас dns недоступен или ещё чего именно уровня сети или http-клиента.
4. Sail - 11 Ноября, 2016 - 15:22:23 - перейти к сообщению
Эта ошибка не связана с настройками сервера, на котором работает клиент.
При обращении к тому-же реестру от РКН время-от времени нет, да и выскакивает это сообщение... при общей стабильной работе скрипта загрузки реестра...
Либо на сервере, к которому обращаешься, блокируется входящий запрос от этого клиента, либо просто косяки с маршрутизацией...
5. NeuroZ - 11 Ноября, 2016 - 15:23:36 - перейти к сообщению
caballero пишет:
получите браузером wsdl с обоих сайтов и сравните на отличия

Отличие в том, что в одном WSDL получается, а в другом нет))) см.ошибку
(Добавление)
Мелкий пишет:
Дёрните с проблемной железки этот урл чем-нибудь более говорливым, curl'ом, wget'ом например. Вдруг у вас dns недоступен или ещё чего именно уровня сети или http-клиента.

Curl 403 возвращает даже при запросе на корень сайт http://avtoto[dot]ru , общаюсь с тех.поддержкой...
6. teddy - 11 Ноября, 2016 - 16:19:47 - перейти к сообщению
Адрес службы в данный момент не доступен для чтения WSDL. В ответ возвращается 403. А значит, сервис недоступен (выходит проблема на стороне сервера веб службы).
По умолчанию PHP кеширует WSDL, что бы каждый раз не лазить за одним и тем же документом, который как правило редко меняется на стороне сервера службы.
Скорее всего, когда вы обращались к удаленному сервису локально, сервис всё ещё был доступен.
Соответственно WSDL был закеширован, в связи с этим __getFunctions проанализировав структуру документа из кеша выдает вам результат, и ошибок не видно.

Попробуйте на локалке до создания клиента написать ini_set('soap.wsdl_cache_enabled', 0);
После запуска скрипта должно вывестись сообщение об ошибке, так как WSDL не будет прочитан из кеша, вместо этого PHP попытается загрузить документ по url службы и поймает 403 в ответ.
(Добавление)
Или там тупо ограничение по айпи
7. NeuroZ - 11 Ноября, 2016 - 16:54:28 - перейти к сообщению
teddy пишет:
Попробуйте на локалке до создания клиента написать ini_set('soap.wsdl_cache_enabled', 0);
После запуска скрипта должно вывестись сообщение об ошибке, так как WSDL не будет прочитан из кеша, вместо этого PHP попытается загрузить документ по url службы и поймает 403 в ответ.

Нет, всё работает... Тех.поддержка ответила, что скорей всего срабатывает блокировка по IP (ошибочная) и будут трясти своего хостера.. В общем отпишусь как санта-барбара решится.
Спасибо за советы и поддержку.

 

Powered by ExBB FM 1.0 RC1