1]); exit; } error_log("Downloaded file: " . strlen($fileContent) . " bytes"); // Извлекаем путь к файлу из documentKey // В $key хранится md5($s3Path . '_' . $version) // Нам нужен оригинальный путь, который мы должны хранить отдельно // ВРЕМЕННО: Сохраняем в отдельную папку в S3 для отладки // TODO: Нужно связать documentKey с оригинальным путём файла // Инициализируем S3 клиент $s3Client = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'ru-1', 'endpoint' => 'https://s3.twcstorage.ru', 'use_path_style_endpoint' => true, 'credentials' => [ 'key' => EnvLoader::getRequired('S3_ACCESS_KEY'), 'secret' => EnvLoader::getRequired('S3_SECRET_KEY') ], 'suppress_php_deprecation_warning' => true ]); $bucket = 'f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c'; // ВРЕМЕННОЕ РЕШЕНИЕ: Сохраняем в папку /onlyoffice_saved/ $savedPath = 'onlyoffice_saved/' . $key . '_' . date('Y-m-d_H-i-s') . '.docx'; $result = $s3Client->putObject([ 'Bucket' => $bucket, 'Key' => $savedPath, 'Body' => $fileContent, 'ContentType' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ]); error_log("File saved to S3: " . $savedPath); error_log("S3 Response: " . json_encode($result->toArray())); http_response_code(200); echo json_encode(['error' => 0]); exit; } catch (Exception $e) { error_log("Error saving file to S3: " . $e->getMessage()); http_response_code(500); echo json_encode(['error' => 1, 'message' => $e->getMessage()]); exit; } } // Другие статусы (1 = открыт, 4 = закрыт и т.д.) http_response_code(200); echo json_encode(['error' => 0]); exit; } // Для всех остальных запросов - 200 OK http_response_code(200); echo json_encode(['error' => 0]); ?>