Files
crm.clientright.ru/attach_documents_to_crm_FIX_NOTES.md
Fedor 01c4fe80b5 chore: snapshot current working tree changes
Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
2026-03-26 14:19:01 +03:00

2.2 KiB
Raw Blame History

Исправление проблемы с attach_documents_to_crm.php

Проблема

При вызове attach_documents_to_crm.php из n8n возвращался массив с null значениями в results.

Причина

Когда upload_documents_to_crm.php загружается через require_once, он проверяет $IS_POST = ($_SERVER['REQUEST_METHOD'] === 'POST'), и если это POST запрос, то выполняется основной код (строки 605-653), который обрабатывает запрос и завершает выполнение через exit/json_response.

Решение

Перед require_once устанавливаем $_SERVER['REQUEST_METHOD'] = 'GET', чтобы предотвратить выполнение основного кода. После загрузки восстанавливаем оригинальный REQUEST_METHOD.

Код исправления

// ✅ Сохраняем оригинальный REQUEST_METHOD и устанавливаем GET, чтобы предотвратить выполнение основного кода
$original_request_method = $_SERVER['REQUEST_METHOD'] ?? null;
$_SERVER['REQUEST_METHOD'] = 'GET';

// ✅ Загружаем upload_documents_to_crm.php
try {
    require_once $upload_script_path;
    
    // ✅ Восстанавливаем оригинальный REQUEST_METHOD
    if ($original_request_method !== null) {
        $_SERVER['REQUEST_METHOD'] = $original_request_method;
    }
} catch (Throwable $e) {
    ob_end_clean();
    // ✅ Восстанавливаем оригинальный REQUEST_METHOD даже при ошибке
    if ($original_request_method !== null) {
        $_SERVER['REQUEST_METHOD'] = $original_request_method;
    }
    // ... обработка ошибки
}

Результат

  • Документ успешно создан и прикреплен к проекту
  • S3 метаданные сохранены правильно
  • Все поля заполнены корректно
  • Возвращается правильная структура ответа

Дата исправления

2025-12-05