# Исправления Send2Court - 23 октября 2025 ## Проблемы, которые были исправлены ### 🔴 Проблема №1: HTTP 500 - Invalid Control Characters **Ошибка:** `Specified value has invalid Control characters. (Parameter 'value')` **Причина:** В адресах из базы данных присутствовали HTML entities (`—`, ` `, `"` и т.д.), которые попадали в JSON и отправлялись в API debex.ru. Сервер не мог обработать эти символы и возвращал ошибку 500. **Пример проблемного адреса:** ``` 362047, Республика Северная Осетия — Алания, Владикавказ... ``` **Решение:** Добавлено декодирование HTML entities с помощью функции `html_entity_decode()` для всех текстовых полей перед отправкой в API: - `courtNoticesAddress` - адрес для судебных уведомлений - `legalAddress` - юридический адрес - `actualResidenceAddress` - фактический адрес - `name` - название организации - Адреса, используемые для поиска суда **Изменения в коде:** ```php // Было: $data['mySelfAdditionalData']['courtNoticesAddress'] = $adb->query_result($result, 0, 'addr_notice'); // Стало: $data['mySelfAdditionalData']['courtNoticesAddress'] = html_entity_decode($adb->query_result($result, 0, 'addr_notice'), ENT_QUOTES | ENT_HTML5, 'UTF-8'); ``` --- ### 🔴 Проблема №2: HTTP 403 при скачивании файлов из S3 **Ошибка:** `ошибка скачивания файла из S3, HTTP код: 403` **Причина:** В именах файлов на S3 присутствовали специальные символы: - `#` (хештег) - интерпретируется как якорь URL - Пробелы - Кириллица в именах файлов - Другие спецсимволы **Пример проблемного URL:** ``` https://s3.twcstorage.ru/.../8_Договор_на_оказание_услуг_09-04-2025-13-52-43_Чужба_10_CTP#realfile.pdf ``` **Решение:** Переписана функция `getTempFileFromS3()` с правильным кодированием URL: 1. URL разбирается на части с помощью `parse_url()` 2. Путь разбивается на сегменты по `/` 3. Каждый сегмент кодируется с помощью `rawurlencode()` 4. URL собирается обратно Теперь символы правильно кодируются: - `#` → `%23` - Пробел → `%20` - Кириллица → правильные UTF-8 последовательности **Изменения в коде:** ```php // Было: $s3Url = str_replace('#', '%23', $s3Url); $s3Url = str_replace(' ', '%20', $s3Url); // Стало: $urlParts = parse_url($s3Url); $path = isset($urlParts['path']) ? $urlParts['path'] : ''; $pathSegments = explode('/', $path); $encodedSegments = array_map(function($segment) { return rawurlencode($segment); }, $pathSegments); $encodedPath = implode('/', $encodedSegments); $s3Url = $urlParts['scheme'] . '://' . $urlParts['host'] . $encodedPath; ``` --- ## Дополнительные улучшения ### Улучшенное логирование - Добавлен вывод размера скачанного файла - Добавлен вывод CURL ошибок при проблемах со скачиванием - Улучшены сообщения в логах для лучшей диагностики ### Проверка валидности данных - Добавлена проверка корректности URL перед попыткой скачивания - Добавлена проверка, что файл не пустой перед сохранением --- ## Файлы, которые были изменены - `/var/www/fastuser/data/www/crm.clientright.ru/include/utils/Debexpert-guzzle.php` - Функция `Send2Court()` - добавлено декодирование HTML entities - Функция `getCourt()` - добавлено декодирование HTML entities в адресах - Функция `getTempFileFromS3()` - переписана с правильным кодированием URL --- ## Тестирование После внедрения исправлений необходимо протестировать отправку: 1. Искового с адресом, содержащим HTML entities (`—`, ` ` и т.д.) 2. Проекта с файлами на S3, содержащими `#` или другие спецсимволы в имени 3. Проекта с кириллицей в именах файлов на S3 --- ## Мониторинг Проверять логи после отправки на наличие: - ❌ `HTTP статус код: 500` + `Invalid Control characters` - ❌ `ошибка скачивания файла из S3, HTTP код: 403` - ✅ `файл сохранен во временную папку` + размер файла - ✅ `получили ответ на запрос` + номер дела --- **Дата исправления:** 23 октября 2025 **Автор:** AI Assistant (Claude) **Статус:** ✅ Готово к тестированию