Files
wevads-platform/test_s3_direct.php
2026-02-26 04:53:11 +01:00

154 lines
4.8 KiB
PHP
Executable File

<?php
/**
* Script de test AWS S3 direct sans dépendances du framework
*/
// Charger AWS SDK si disponible
$possiblePaths = [
'/opt/adxapp2/vendor/autoload.php',
'/opt/adxapp2/app/libraries/vendor/autoload.php',
__DIR__ . '/vendor/autoload.php'
];
$awsLoaded = false;
foreach ($possiblePaths as $path) {
if (file_exists($path)) {
require_once $path;
$awsLoaded = true;
echo "AWS SDK chargé depuis : $path\n";
break;
}
}
if (!$awsLoaded) {
echo "ERREUR: AWS SDK non trouvé. Installation requise.\n";
echo "Tentative d'installation via Composer...\n";
// Vérifier si composer est disponible
$composerPath = '/usr/local/bin/composer';
if (!file_exists($composerPath)) {
$composerPath = 'composer';
}
// Essayer d'installer AWS SDK
$output = [];
$returnCode = 0;
exec("cd /opt/adxapp2 && $composerPath require aws/aws-sdk-php 2>&1", $output, $returnCode);
if ($returnCode === 0) {
echo "AWS SDK installé avec succès!\n";
require_once '/opt/adxapp2/vendor/autoload.php';
} else {
echo "Échec de l'installation AWS SDK:\n";
echo implode("\n", $output) . "\n";
exit(1);
}
}
echo "\n=== Test de diagnostic AWS S3 ===\n\n";
// Lire la configuration
$configFile = '/opt/adxapp2/app/config/amazoncloud.crd.json';
$config = json_decode(file_get_contents($configFile), true);
echo "Configuration chargée :\n";
echo "- Région: " . $config['region'] . "\n";
echo "- Bucket: " . $config['BucketName'] . "\n";
echo "- Access Key ID: " . substr($config['AWSAccessKeyId'], 0, 8) . "...\n\n";
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
try {
// Créer le client S3
$s3Client = new S3Client([
'version' => $config['version'],
'region' => $config['region'],
'credentials' => [
'key' => $config['AWSAccessKeyId'],
'secret' => $config['AWSSecretKey']
]
]);
echo "1. Client S3 créé avec succès\n";
// Test 1: Vérifier si le bucket existe
echo "2. Test d'existence du bucket '{$config['BucketName']}'...\n";
try {
$result = $s3Client->headBucket(['Bucket' => $config['BucketName']]);
echo "✓ Bucket existe et est accessible\n";
} catch (AwsException $e) {
$errorCode = $e->getAwsErrorCode();
echo "✗ Erreur bucket: $errorCode - " . $e->getMessage() . "\n";
if ($errorCode === 'NoSuchBucket') {
echo " Le bucket n'existe pas dans cette région\n";
} elseif ($errorCode === 'AccessDenied') {
echo " Pas de permissions pour accéder au bucket\n";
}
}
// Test 2: Lister les buckets accessibles
echo "3. Test de listage des buckets accessibles...\n";
try {
$result = $s3Client->listBuckets();
$buckets = $result['Buckets'];
echo "✓ Buckets accessibles:\n";
foreach ($buckets as $bucket) {
echo " - " . $bucket['Name'] . " (créé le " . $bucket['CreationDate'] . ")\n";
}
} catch (AwsException $e) {
echo "✗ Erreur listage buckets: " . $e->getMessage() . "\n";
}
// Test 3: Test des permissions sur le bucket spécifique
echo "4. Test des permissions sur le bucket '{$config['BucketName']}'...\n";
try {
// Test PutObject
$testKey = 'test-connection-' . time() . '.txt';
$s3Client->putObject([
'Bucket' => $config['BucketName'],
'Key' => $testKey,
'Body' => 'Test de connexion depuis Wevads Framework'
]);
echo "✓ Permission PutObject: OK\n";
// Test GetObject
$result = $s3Client->getObject([
'Bucket' => $config['BucketName'],
'Key' => $testKey
]);
echo "✓ Permission GetObject: OK\n";
// Test DeleteObject
$s3Client->deleteObject([
'Bucket' => $config['BucketName'],
'Key' => $testKey
]);
echo "✓ Permission DeleteObject: OK\n";
echo "\n🎉 SUCCÈS: Toutes les permissions S3 sont correctes!\n";
} catch (AwsException $e) {
$errorCode = $e->getAwsErrorCode();
echo "✗ Erreur permissions: $errorCode - " . $e->getMessage() . "\n";
if ($errorCode === 'AccessDenied') {
echo " PROBLÈME: L'utilisateur n'a pas les permissions nécessaires\n";
echo " Actions requises:\n";
echo " - s3:PutObject\n";
echo " - s3:GetObject\n";
echo " - s3:DeleteObject\n";
echo " - s3:ListBucket\n";
}
}
} catch (Exception $e) {
echo "✗ EXCEPTION GÉNÉRALE: " . $e->getMessage() . "\n";
echo "Trace: " . $e->getTraceAsString() . "\n";
}
echo "\n=== Fin du test ===\n";
?>