✨ Features: - Migrated ALL files to new S3 structure (Projects, Contacts, Accounts, HelpDesk, Invoice, etc.) - Added Nextcloud folder buttons to ALL modules - Fixed Nextcloud editor integration - WebSocket server for real-time updates - Redis Pub/Sub integration - File path manager for organized storage - Redis caching for performance (Functions.php) 📁 New Structure: Documents/Project/ProjectName_ID/file_docID.ext Documents/Contacts/FirstName_LastName_ID/file_docID.ext Documents/Accounts/AccountName_ID/file_docID.ext 🔧 Technical: - FilePathManager for standardized paths - S3StorageService integration - WebSocket server (Node.js + Docker) - Redis cache for getBasicModuleInfo() - Predis library for Redis connectivity 📝 Scripts: - Migration scripts for all modules - Test pages for WebSocket/SSE/Polling - Documentation (MIGRATION_*.md, REDIS_*.md) 🎯 Result: 15,000+ files migrated successfully!
5.5 KiB
Исправления 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- название организации- Адреса, используемые для поиска суда
Изменения в коде:
// Было:
$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:
- URL разбирается на части с помощью
parse_url() - Путь разбивается на сегменты по
/ - Каждый сегмент кодируется с помощью
rawurlencode() - URL собирается обратно
Теперь символы правильно кодируются:
#→%23- Пробел →
%20 - Кириллица → правильные UTF-8 последовательности
Изменения в коде:
// Было:
$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
- Функция
Тестирование
После внедрения исправлений необходимо протестировать отправку:
- Искового с адресом, содержащим HTML entities (
—, и т.д.) - Проекта с файлами на S3, содержащими
#или другие спецсимволы в имени - Проекта с кириллицей в именах файлов на S3
Мониторинг
Проверять логи после отправки на наличие:
- ❌
HTTP статус код: 500+Invalid Control characters - ❌
ошибка скачивания файла из S3, HTTP код: 403 - ✅
файл сохранен во временную папку+ размер файла - ✅
получили ответ на запрос+ номер дела
Дата исправления: 23 октября 2025
Автор: AI Assistant (Claude)
Статус: ✅ Готово к тестированию