SoapFault: похоже, у нас нет ошибки php XML-документа

У меня возникла ошибка, решения которой я не знаю.

$response = $client->addcontract($docVar,$fVar);

Это ошибка после этой строки кода: Снимок экрана с ошибкой

$client=new SoapClient($wsdlUrl, array('cache_wsdl' => 0,'trace'=>1));
$docVar = new SoapVar($_POST, SOAP_ENC_OBJECT);
$file = array();
$file['file'] = base64_encode(file_get_contents($contract));
$file['filename'] = basename($contract);
$file['mime_type'] = 'application/pdf';
$fVar = new SoapVar($file, SOAP_ENC_OBJECT);

Может можно попробовать разобраться в этой проблеме? Заранее спасибо!

Upd: в моем файле php.ini нет always_populate_raw_post_data

Upd 2: Добавил эту кучу кода:

try {
    $response = $client->addcontract($docVar, $fVar);
} catch(SoapFault $fault) {
    trigger_error("Error SOAP: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
}

Вот что он возвращает: Неустранимая ошибка: ошибка SOAP: (код ошибки: клиент, строка ошибки: похоже, у нас нет XML-документа)

Upd 3: Добавлен код в блок catch.

echo $client->__getLastRequest();
echo $client->__getLastResponse();

И добавил исключения => 1 для SoapClient. Это то, что он возвращает в __getLastResponse (): CException Неопределенное смещение: 1 (/var/www/yii-1.0.9.r1396/framework/base/CApplication.php:608) (/var/www/yii-1.0.9.r1396/framework/web/services/CWebService. php: 103)

Upd 4: нашел код, есть первые строчки:

/**
* @param object post         
* @param object file         
* @return array      
* @soap
*/
public function addcontract($post,$file)
{            
    if (isset($post))
    {
        //We need to add the designer,partner,job,customer,document
        $model= Partners::model()->findByPk($post->partner_id);
        if ($model === null)
        {
            $model = new Partners();
            $model->id=$post->partner_id;
        }

Если я попытаюсь повторить / var_dump что-то в этом коде, ничего не произойдет. Но если я сломаюсь; код не перейдет к моей ошибке ошибки мыла.

Upd Last: я опубликовал ответ на этот вопрос в отдельном сообщении с ответом

Функции $client->__getLastRequest(), $client->__getLastResponse() могут дать дополнительную информацию об ошибке.

avy 25.09.2018 12:39

@avy, если я использую эти функции до ошибки, он покажет мне информацию не о моей ошибке, потому что моя ошибка будет позже. Если я использую эти функции после ошибки, они не будут работать, потому что все после моей ошибки не работает.

Stanislav Kovalenko 25.09.2018 12:44

Передайте 'exceptions' => true в конструктор SoapClient, затем оберните свой метод в try { } catch { }, и вы сможете передать var_dump последний запрос и ответ внутри блока catch.

avy 25.09.2018 12:48

@avy Посмотрите Upd 3, я добавил кучу кода

Stanislav Kovalenko 25.09.2018 18:52

Вы используете Yii? Необходимо убедиться, что эта ошибка исходит от вас.

Jacob 25.09.2018 20:40

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

Jacob 25.09.2018 21:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
2 016
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, я исправил ошибку. Ошибка в функции $ client-> addcontract (). Я думаю, что это слишком локальная ошибка, поэтому я хочу посоветовать просто проверить, нет ли ошибок в функции мыла.

Другие вопросы по теме