Intereting Posts
preg_match url получить парсинг параметров Поисковый запрос PHP xpath Разработка переадресации ссылки администратора WordPress на сайт PHP: дата больше текущей даты Как создать список параметров для функции? Facebook Передача аргументов в файлы JPG и отображение пользовательских изображений PHP для чтения значения DB, JS для его увеличения, AJAX для сохранения в DB, ​​но почему он по умолчанию 0.0 до обновления страницы? .htaccess перенаправить привязную страницу / страницу # привязка к URL-адресу PDO + MySQL и сломанная кодировка UTF-8 ссылка в разбивке по страницам не работает Заполнение поля ввода поиска с использованием PHP со значениями из таблицы MySQL Soap – base64 двоичные данные в PHP Преобразование строки массива PHP в массив Поиск ближайшего числового совпадения в базе данных с тем, что пользователь ввел в php Как определить положение автомобиля внутри изображения?

Magento SOAP API – исключение PHP для вызова метода входа: «похоже, что у нас нет XML-документа»

У меня возникли проблемы с подключением к SOAP API Magento через PHP SoapClient. У меня есть небольшая тестовая версия PHP-файла на моем dev-сервере со следующим кодом:

<?php $soapC = new SoapClient('http://XXXX.com/api/soap/?wsdl', array('trace'=>true, 'exceptions'=>false)); $session = $soapC->__soapCall('login', array('TestUsr', 'test123')); var_dump($session); ?> 

Файл PHP находится на том же сервере, что и мой magento dev. Когда я запускаю скрипт php через командную строку, переменная $ session выводит объект SoapFault с ошибкой, которая говорит «похоже, что у нас нет XML-документа».

Не знаете, как это решить. Когда я пытаюсь выполнить код ниже, я могу получить распечатку всех методов API, но по какой-либо причине вызов метода входа в систему вызывает проблемы.

 $soapC = new SoapClient('http://XXXX.com/api/soap/?wsdl', array('trace'=>true, 'exceptions'=>false)); print_r($soapC->__getFunctions()); 

Эта ошибка обычно означает, что проблема находится на стороне сервера. Сервер, обрабатывающий запрос, не выводит корректный XML. Убедитесь, что ошибок и переадресаций не происходит.

Что произойдет, если вы заходите в конечную точку сервера в браузере?

Я понял, что проблема заключалась в том, что когда сервер пытался получить доступ к файлу wsdl, Magento выдавал перенаправление 302 на витрину.

Чтобы исправить это, я вошел в панель администрирования Magento, перешел в System -> Configuration -> Web и отключил «Авто-перенаправление на базовый URL». Сейчас работает как шарм.

Откройте файл php.ini с удаленного сервера или локального сервера и установите для параметра always_populate_raw_post_data значение -1 .

После этого вам необходимо перезапустить сервер Apache.

После перезапуска перезапустите свой сценарий еще раз.