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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
NeuroZ
Отправлено: 11 Ноября, 2016 - 14:24:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Всем привет! Помогите, перегуглил уже 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 нормально отрабатывать?
 
 Top
caballero
Отправлено: 11 Ноября, 2016 - 15:18:58
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




получите браузером wsdl с обоих сайтов и сравните на отличия


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Мелкий Супермодератор
Отправлено: 11 Ноября, 2016 - 15:21:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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


-----
PostgreSQL DBA
 
 Top
Sail
Отправлено: 11 Ноября, 2016 - 15:22:23
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Эта ошибка не связана с настройками сервера, на котором работает клиент.
При обращении к тому-же реестру от РКН время-от времени нет, да и выскакивает это сообщение... при общей стабильной работе скрипта загрузки реестра...
Либо на сервере, к которому обращаешься, блокируется входящий запрос от этого клиента, либо просто косяки с маршрутизацией...
 
 Top
NeuroZ
Отправлено: 11 Ноября, 2016 - 15:23:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




caballero пишет:
получите браузером wsdl с обоих сайтов и сравните на отличия

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

Curl 403 возвращает даже при запросе на корень сайт http://avtoto[dot]ru , общаюсь с тех.поддержкой...
 
 Top
teddy
Отправлено: 11 Ноября, 2016 - 16:19:47
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Адрес службы в данный момент не доступен для чтения WSDL. В ответ возвращается 403. А значит, сервис недоступен (выходит проблема на стороне сервера веб службы).
По умолчанию PHP кеширует WSDL, что бы каждый раз не лазить за одним и тем же документом, который как правило редко меняется на стороне сервера службы.
Скорее всего, когда вы обращались к удаленному сервису локально, сервис всё ещё был доступен.
Соответственно WSDL был закеширован, в связи с этим __getFunctions проанализировав структуру документа из кеша выдает вам результат, и ошибок не видно.

Попробуйте на локалке до создания клиента написать ini_set('soap.wsdl_cache_enabled', 0);
После запуска скрипта должно вывестись сообщение об ошибке, так как WSDL не будет прочитан из кеша, вместо этого PHP попытается загрузить документ по url службы и поймает 403 в ответ.
(Добавление)
Или там тупо ограничение по айпи

(Отредактировано автором: 11 Ноября, 2016 - 16:22:55)

 
 Top
NeuroZ
Отправлено: 11 Ноября, 2016 - 16:54:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




teddy пишет:
Попробуйте на локалке до создания клиента написать ini_set('soap.wsdl_cache_enabled', 0);
После запуска скрипта должно вывестись сообщение об ошибке, так как WSDL не будет прочитан из кеша, вместо этого PHP попытается загрузить документ по url службы и поймает 403 в ответ.

Нет, всё работает... Тех.поддержка ответила, что скорей всего срабатывает блокировка по IP (ошибочная) и будут трясти своего хостера.. В общем отпишусь как санта-барбара решится.
Спасибо за советы и поддержку.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB