connect_error) { die("Connection failed: " . $mysqli->connect_error); } $mysqli->set_charset("utf8"); echo "=== Проверка доступа к S3 файлам проекта 390657 ===\n\n"; // Список ID файлов с битыми ссылками $broken_file_ids = [390668, 390666, 390664, 390662, 390660]; foreach ($broken_file_ids as $notesid) { echo "Проверка файла ID: $notesid\n"; // Получаем данные файла $query = "SELECT notesid, title, filename, s3_key, s3_bucket FROM vtiger_notes WHERE notesid = ?"; $stmt = $mysqli->prepare($query); $stmt->bind_param('i', $notesid); $stmt->execute(); $result = $stmt->get_result(); if ($row = $result->fetch_assoc()) { $s3_key = $row['s3_key']; $s3_bucket = $row['s3_bucket']; $current_filename = $row['filename']; echo " Название: " . $row['title'] . "\n"; echo " S3 Key: " . $s3_key . "\n"; echo " S3 Bucket: " . $s3_bucket . "\n"; echo " Текущий URL: " . substr($current_filename, 0, 100) . "...\n"; // Пробуем разные варианты URL $base_url = "https://s3.twcstorage.ru/$s3_bucket/"; // 1. URL с правильной кодировкой $encoded_key = implode('/', array_map('rawurlencode', explode('/', $s3_key))); $url1 = $base_url . $encoded_key; // 2. URL без #realfile $clean_key = str_replace('#realfile', '', $s3_key); $encoded_clean_key = implode('/', array_map('rawurlencode', explode('/', $clean_key))); $url2 = $base_url . $encoded_clean_key; // 3. URL с простой кодировкой $url3 = $base_url . urlencode($s3_key); echo " Тест 1 (правильная кодировка): " . substr($url1, 0, 100) . "...\n"; $headers1 = @get_headers($url1, 1); if ($headers1 && strpos($headers1[0], '200') !== false) { echo " ✅ Доступен (200)\n"; } elseif ($headers1 && strpos($headers1[0], '403') !== false) { echo " ❌ Запрещен (403)\n"; } elseif ($headers1 && strpos($headers1[0], '404') !== false) { echo " ❌ Не найден (404)\n"; } else { echo " ❓ Неизвестная ошибка: " . ($headers1[0] ?? 'Нет ответа') . "\n"; } echo " Тест 2 (без #realfile): " . substr($url2, 0, 100) . "...\n"; $headers2 = @get_headers($url2, 1); if ($headers2 && strpos($headers2[0], '200') !== false) { echo " ✅ Доступен (200)\n"; } elseif ($headers2 && strpos($headers2[0], '403') !== false) { echo " ❌ Запрещен (403)\n"; } elseif ($headers2 && strpos($headers2[0], '404') !== false) { echo " ❌ Не найден (404)\n"; } else { echo " ❓ Неизвестная ошибка: " . ($headers2[0] ?? 'Нет ответа') . "\n"; } echo " Тест 3 (простая кодировка): " . substr($url3, 0, 100) . "...\n"; $headers3 = @get_headers($url3, 1); if ($headers3 && strpos($headers3[0], '200') !== false) { echo " ✅ Доступен (200)\n"; } elseif ($headers3 && strpos($headers3[0], '403') !== false) { echo " ❌ Запрещен (403)\n"; } elseif ($headers3 && strpos($headers3[0], '404') !== false) { echo " ❌ Не найден (404)\n"; } else { echo " ❓ Неизвестная ошибка: " . ($headers3[0] ?? 'Нет ответа') . "\n"; } } else { echo " ❌ Файл не найден в БД\n"; } $stmt->close(); echo "---\n"; } $mysqli->close(); echo "\n=== Проверка завершена ===\n"; ?>