$s3Url, CURLOPT_CUSTOMREQUEST => 'HEAD', CURLOPT_RETURNTRANSFER => true, CURLOPT_NOBODY => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 10, CURLOPT_HTTPHEADER => [ 'Authorization: AWS ' . $s3AccessKey . ':' . $s3SecretKey, 'Date: ' . gmdate('D, d M Y H:i:s T', $timestamp), ] ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); curl_close($ch); if ($error) { echo " ❌ cURL error: {$error}\n"; } else { echo " HTTP Code: {$httpCode}\n"; if ($httpCode == 200) { echo " ✅ ФАЙЛ НАЙДЕН!\n"; echo " URL: {$s3Url}\n\n"; // Пробуем скачать файл echo "Скачиваем файл...\n"; $downloadUrl = $s3Url; $tempFile = '/tmp/restored_' . $fileName; $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $downloadUrl, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 30, CURLOPT_HTTPHEADER => [ 'Authorization: AWS ' . $s3AccessKey . ':' . $s3SecretKey, 'Date: ' . gmdate('D, d M Y H:i:s T', $timestamp), ] ]); $fileContent = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); curl_close($ch); if ($error) { echo " ❌ Ошибка скачивания: {$error}\n"; } elseif ($httpCode == 200 && !empty($fileContent)) { file_put_contents($tempFile, $fileContent); echo " ✅ Файл скачан: {$tempFile}\n"; echo " Размер: " . strlen($fileContent) . " байт\n"; // Восстанавливаем в локальное хранилище $restorePath = "/var/www/fastuser/data/www/crm.clientright.ru/storage/2025/August/week5/"; if (!is_dir($restorePath)) { mkdir($restorePath, 0755, true); echo " Создана папка: {$restorePath}\n"; } $finalPath = $restorePath . $fileName; copy($tempFile, $finalPath); unlink($tempFile); echo " ✅ Файл восстановлен: {$finalPath}\n"; echo " Размер: " . filesize($finalPath) . " байт\n"; // Обновляем БД echo "\nОбновляем базу данных...\n"; include_once 'config.inc.php'; $mysqli = new mysqli($dbconfig['db_server'], $dbconfig['db_username'], $dbconfig['db_password'], $dbconfig['db_name']); if ($mysqli->connect_error) { echo "❌ Ошибка подключения к БД: " . $mysqli->connect_error . "\n"; } else { $stmt = $mysqli->prepare("UPDATE vtiger_attachments SET path = ? WHERE attachmentsid = 391075"); $stmt->bind_param("s", $restorePath); if ($stmt->execute()) { echo "✅ База данных обновлена\n"; } else { echo "❌ Ошибка обновления БД: " . $stmt->error . "\n"; } $stmt->close(); $mysqli->close(); } echo "\n🎉 ФАЙЛ 391075 УСПЕШНО ВОССТАНОВЛЕН!\n"; exit(0); } else { echo " ❌ Ошибка скачивания, HTTP: {$httpCode}\n"; } } else { echo " ❌ Файл не найден\n"; } } echo "\n"; } echo "❌ Файл не найден ни по одному из путей\n"; echo "Проверьте архивы вручную или обратитесь к администратору\n"; ?>