Files
crm.clientright.ru/check_s3_access_371231.php

117 lines
3.5 KiB
PHP
Raw Permalink Normal View History

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once '/var/www/fastuser/data/www/crm.clientright.ru/vendor/autoload.php';
require_once '/var/www/fastuser/data/www/crm.clientright.ru/config.inc.php';
require_once '/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/config.php';
$pdo = new PDO(
"mysql:host={$dbconfig['db_server']};port=3306;dbname={$dbconfig['db_name']};charset=utf8",
$dbconfig['db_username'],
$dbconfig['db_password'],
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$projectId = 371231;
// Получаем документы проекта
$sql = "SELECT
n.notesid,
n.title,
n.filename,
n.filelocationtype,
n.s3_bucket,
n.s3_key
FROM vtiger_notes n
INNER JOIN vtiger_crmentity e ON e.crmid = n.notesid
INNER JOIN vtiger_senotesrel snr ON snr.notesid = n.notesid
WHERE snr.crmid = ? AND e.deleted = 0 AND n.filelocationtype = 'E'
ORDER BY n.notesid DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute([$projectId]);
$documents = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "Проверка доступности S3 файлов для проекта $projectId\n";
echo str_repeat("=", 80) . "\n\n";
// Инициализируем S3 клиент
$s3Config = $config['s3'];
$awsClient = new \Aws\S3\S3Client([
'version' => 'latest',
'region' => $s3Config['region'],
'endpoint' => $s3Config['endpoint'],
'credentials' => [
'key' => $s3Config['key'],
'secret' => $s3Config['secret'],
],
'use_path_style_endpoint' => true,
]);
$accessible = 0;
$notAccessible = 0;
$errors = [];
foreach ($documents as $doc) {
$notesid = $doc['notesid'];
$title = $doc['title'];
$s3Bucket = $doc['s3_bucket'];
$s3Key = $doc['s3_key'];
try {
$exists = $awsClient->doesObjectExist($s3Bucket, $s3Key);
if ($exists) {
$accessible++;
echo "✅ ID: $notesid - $title\n";
} else {
$notAccessible++;
echo "❌ ID: $notesid - $title\n";
echo " S3 Key: $s3Key\n";
$errors[] = [
'id' => $notesid,
'title' => $title,
's3_key' => $s3Key,
'reason' => 'File does not exist in S3'
];
}
} catch (\Aws\Exception\AwsException $e) {
$notAccessible++;
echo "❌ ID: $notesid - $title\n";
echo " Ошибка: " . $e->getMessage() . "\n";
echo " S3 Key: $s3Key\n";
$errors[] = [
'id' => $notesid,
'title' => $title,
's3_key' => $s3Key,
'reason' => 'AWS Exception: ' . $e->getMessage()
];
} catch (Exception $e) {
$notAccessible++;
echo "❌ ID: $notesid - $title\n";
echo " Ошибка: " . $e->getMessage() . "\n";
$errors[] = [
'id' => $notesid,
'title' => $title,
's3_key' => $s3Key,
'reason' => 'Exception: ' . $e->getMessage()
];
}
}
echo "\n" . str_repeat("=", 80) . "\n";
echo "СТАТИСТИКА:\n";
echo " Доступных файлов: $accessible\n";
echo " Недоступных файлов: $notAccessible\n";
if (!empty($errors)) {
echo "\nНЕДОСТУПНЫЕ ФАЙЛЫ:\n";
foreach ($errors as $error) {
echo " - ID {$error['id']}: {$error['title']}\n";
echo " S3 Key: {$error['s3_key']}\n";
echo " Причина: {$error['reason']}\n\n";
}
}