Configure AWS SDK for PHP
 
  - Install the AWS SDK for PHP using Composer. This SDK allows you to interact with Amazon S3 API in a PHP environment.
 
 
composer require aws/aws-sdk-php
 
  - Include the Composer autoloader in your PHP script to load the SDK.
 
 
require 'vendor/autoload.php';
 
  - Initialize the S3 client with your credentials. Replace `your-access-key`, `your-secret-key`, and `your-region` with your actual AWS credentials and region.
 
 
use Aws\S3\S3Client;
$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'your-region',
    'credentials' => [
        'key'    => 'your-access-key',
        'secret' => 'your-secret-key',
    ],
]);
 
Create a Bucket
 
  - Creating a new bucket is straightforward. Specify a unique bucket name.
 
 
try {
    $result = $s3->createBucket([
        'Bucket' => 'your-unique-bucket-name',
    ]);
    echo "Bucket created: " . $result['Location'];
} catch (Aws\Exception\AwsException $e) {
    echo "Error: " . $e->getMessage();
}
 
Upload Files to a Bucket
 
  - To upload files, use the `putObject` function. Provide the bucket name, file key (name in the bucket), and the source file path.
 
 
try {
    $result = $s3->putObject([
        'Bucket' => 'your-bucket-name',
        'Key'    => 'your-file-key',
        'SourceFile' => '/path/to/your/file',
    ]);
    echo "File uploaded: " . $result['ObjectURL'];
} catch (Aws\Exception\AwsException $e) {
    echo "Error: " . $e->getMessage();
}
 
List Objects in a Bucket
 
  - Retrieve a list of objects stored in a bucket using the `listObjects` method.
 
 
try {
    $result = $s3->listObjects([
        'Bucket' => 'your-bucket-name',
    ]);
    foreach ($result['Contents'] as $object) {
        echo $object['Key'] . "\n";
    }
} catch (Aws\Exception\AwsException $e) {
    echo "Error: " . $e->getMessage();
}
 
Download Files from a Bucket
 
  - Download a file from your S3 bucket using the `getObject` method, specifying the bucket and key.
 
 
try {
    $result = $s3->getObject([
        'Bucket' => 'your-bucket-name',
        'Key'    => 'your-file-key',
    ]);
    file_put_contents('/path/to/save/file', $result['Body']);
    echo "File downloaded successfully.";
} catch (Aws\Exception\AwsException $e) {
    echo "Error: " . $e->getMessage();
}
 
Delete Files from a Bucket
 
  - Use the `deleteObject` method to remove files from a bucket by specifying the bucket and the file’s key.
 
 
try {
    $result = $s3->deleteObject([
        'Bucket' => 'your-bucket-name',
        'Key'    => 'your-file-key',
    ]);
    echo "File deleted successfully.";
} catch (Aws\Exception\AwsException $e) {
    echo "Error: " . $e->getMessage();
}
 
Delete a Bucket
 
  - Ensure that the bucket is empty before attempting to delete it, then use the `deleteBucket` method.
 
 
try {
    $result = $s3->deleteBucket([
        'Bucket' => 'your-bucket-name',
    ]);
    echo "Bucket deleted successfully.";
} catch (Aws\Exception\AwsException $e) {
    echo "Error: " . $e->getMessage();
}
 
Manage Permissions
 
  - Managing permissions involves setting bucket or object access policies. Utilize the `putBucketPolicy` method to set policies.
 
 
$policy = '{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}';
try {
    $result = $s3->putBucketPolicy([
        'Bucket' => 'your-bucket-name',
        'Policy' => $policy,
    ]);
    echo "Bucket policy set successfully.";
} catch (Aws\Exception\AwsException $e) {
    echo "Error: " . $e->getMessage();
}
 
Conclusion
 
  - These snippets provide a robust starting point for managing cloud storage through Amazon S3 with PHP. Always handle exceptions and errors properly to create a resilient application.