Имя: Пароль:
1C
1С v8
Не создает SOAP клиент
,
0 790th
 
22.08.13
10:36
Из платформы 8.3.2.163 опубликовал веб-сервис на IIS 5.1.
Установил PHP 5.3.271
Сделал файл index.php:

ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient("http://localhost/InfoBase4/ws/wsnomen.1cws?wsdl";);

При открытии http://localhost/index.php получаю ошибку:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost/InfoBase4/ws/wsnomen.1cws?wsdl' : failed to load external entity "http://localhost/InfoBase4/ws/wsnomen.1cws?wsdl"; in C:\Inetpub\wwwroot\index.php:5 Stack trace: #0 C:\Inetpub\wwwroot\index.php(5): SoapClient->SoapClient('http://localhos...') #1 {main} thrown in C:\Inetpub\wwwroot\index.php on line 5

При этом если открыть http://localhost/InfoBase4/ws/wsnomen.1cws?wsdl то нормально открывается описание веб сервиса:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/"; xmlns:soapbind="http://sch
... и т.д.

В чем может быть ошибка ?
1 790th
 
22.08.13
10:38
Пардон, код PHP Таков:
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient("http://localhost/InfoBase4/ws/wsnomen.1cws?wsdl";);
2 790th
 
22.08.13
10:39
т.е. там нет точки-запятой перед скобкой, подставляется почему то автоматически при публикации в форуме
3 sda553
 
22.08.13
10:47
Раздел [soap] из php.ini дай
4 sda553
 
22.08.13
10:51
И попробуй туда же раскомментировать
extension=php_openssl.dll
там где экстеншены
5 790th
 
22.08.13
10:58
в разделе пхп все норм
[PHP_OPENSSL]
extension=php_openssl.dll
6 790th
 
22.08.13
10:59
сори опять тороплюсь вот:
[PHP_SOAP]
extension=php_soap.dll
7 790th
 
22.08.13
11:26
Обнаружил, что если в пхп написать
$client = new SoapClient("bugaga");
то ошибку выдает точно такую же.

А если например:
$client = new SoapClient_("bugaga");
то ошибка меняется
Fatal error: Class 'SoapClient_' not found in C:\Inetpub\wwwroot\index.php on line 5
8 Asmody
 
22.08.13
11:40
9 790th
 
22.08.13
15:39
(8) интересно. Установил, запустил ПХП. Просит пароль. Переустановил IIS, настроил у него ПХП, раздал права на папки. Пароль требовать перестал, но и ссылку
http://127.0.0.1/otladka/ws/lyay.1cws?wsdl
теперь не видит. Разбираюсь.
10 790th
 
22.08.13
15:59
Заработало.
Подставил прилагаемый к примеру default.vrd и возможно (точно не помню)затронул настройки безопасности IIS/Свойства: otladka/Безопасность каталога/Анонимный доступ и проверка подл./Изменить. Установлены флаги:
Анонимный доступ
Разрешить управление паролем из ИИС
+Указано имя пользователя
На вкладке "Виртуальный каталог" кроме прочих доступны поля:
Локальный путь
Имя приложения
+кнопка Настройка

Еще вероятнее всего повлияло:
В конфигураторе при публикации Имя: otladka
где то на мисте читал что оно должно соответствовать названию своего каталога (C:\Inetpub\wwwroot\otladka\)
11 790th
 
22.08.13
16:01
а у меня по-умолчанию имя стояло: db
(8) хороший пример, спасибо !
12 790th
 
23.08.13
10:15
И еще одна любопытная деталь:
Если сейчас обращусь по адресу http://127.0.0.1/index.php
без вопросов откроется пример
А если ввести адрес
http://127.0.0.1/otladka/ws/lyay.1cws?wsdl
То спросит логин и пароль. В этом примере, в PHP файле указаны логин и пароль: 'site'
Так вот они подходят, что странно, учитывая что я их нигде не вводил ранее.
13 790th
 
23.08.13
10:21
(0) кстати объявление "new SoapClient" , в соответствии с примером у меня теперь выглядит немного сложнее:

function ПодключитьсяК1С(){
    if (!function_exists('is_soap_fault')){
      print 'Не настроен web сервер. Не найден модуль php-soap.';
      return false;
    }
    try {
      $Клиент1С = new SoapClient('http://127.0.0.1/otladka/ws/lyay.1cws?wsdl',
                               array('login'          => 'site',
                                     'password'       => 'site',
                                     'soap_version'   => SOAP_1_2,
                                     'cache_wsdl'     => WSDL_CACHE_NONE, //WSDL_CACHE_MEMORY, //, WSDL_CACHE_NONE, WSDL_CACHE_DISK or WSDL_CACHE_BOTH
                                     'exceptions'     => true,
                                     'trace'          => 1));
    }catch(SoapFault $e) {
      trigger_error('Ошибка подключения или внутренняя ошибка сервера. Не удалось связаться с базой 1С.', E_ERROR);
      var_dump($e);
    }
    //echo 'Раз<br>';
    if (is_soap_fault(Клиент1С)){
      trigger_error('Ошибка подключения или внутренняя ошибка сервера. Не удалось связаться с базой 1С.', E_ERROR);
      return false;
    }
    return $Клиент1С;
  }
14 790th
 
23.08.13
10:48
(12) это всего лишь пользователь бд
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой