Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
2.2 KiB
2.2 KiB
Исправление проблемы с 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