154 lines
4.8 KiB
PHP
Executable File
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";
|
|
?>
|