العمل مع S3 والتخزين السحابي في PHP: مكتبة AWS SDK لـ PHP

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع S3 والتخزين السحابي في PHP: AWS SDK لـ PHP



تستخدم تطبيقات الويب الحديثة بشكل متزايد التخزين السحابي لتخزين الملفات والصور والنسخ الاحتياطية والمحتوى الآخر. Amazon S3 (Simple Storage Service) هي واحدة من أشهر خدمات التخزين الكائني، والتي توفر تخزينًا قابلًا للتوسع وآمنًا وعالي الأداء. في هذه المقالة، سننظر في كيفية العمل مع S3 والتخزين السحابي في PHP باستخدام AWS SDK الرسمي لـ PHP.



ما هو AWS SDK لـ PHP؟



AWS SDK لـ PHP هي مكتبة رسمية من Amazon تتيح التفاعل مع خدمات AWS، بما في ذلك S3، من تطبيقات PHP. توفر واجهة كائنية التوجه سهلة الاستخدام، وإدارة تلقائية لتوقيعات الطلبات، ومعالجة الأخطاء، ودعم جميع الإصدارات الحديثة من PHP (7.2+).



تثبيت AWS SDK



يتم التثبيت عبر Composer. قم بتنفيذ الأمر في جذر مشروعك:



composer require aws/aws-sdk-php


بعد التثبيت، قم بتضمين التحميل التلقائي لـ Composer في ملف PHP الخاص بك:



require 'vendor/autoload.php';


إعداد الاتصال بـ S3



للعمل مع S3، ستحتاج إلى Access Key ID و Secret Access Key، والتي يمكن الحصول عليها من وحدة تحكم AWS IAM. كما يجب تحديد منطقة حاويتك (مثل us-east-1 أو eu-central-1).



مثال على التكوين الأساسي لعميل S3:



use Aws\\S3\\S3Client;

$s3Client = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1', 'credentials' => [ 'key' => 'ACCESS_KEY_الخاص_بك', 'secret' => 'SECRET_KEY_الخاص_بك', ],]);


للاستخدام في الإنتاج، يُوصى باستخدام متغيرات البيئة أو ملفات تكوين AWS لتجنب تخزين المفاتيح في الكود:



putenv('AWS_ACCESS_KEY_ID=ACCESS_KEY_الخاص_بك');putenv('AWS_SECRET_ACCESS_KEY=SECRET_KEY_الخاص_بك');putenv('AWS_DEFAULT_REGION=us-east-1');


العمليات الأساسية مع S3 في PHP



1. إنشاء حاوية (Bucket)



الحاوية هي حاوية للكائنات (الملفات) الخاصة بك. يجب أن يكون اسم الحاوية فريدًا عالميًا:



try {    $result = $s3Client->createBucket([        'Bucket' => 'my-unique-bucket-name',    ]);    echo "تم إنشاء الحاوية: " . $result['Location'];} catch (Aws\\Exception\\AwsException $e) {    echo "خطأ: " . $e->getMessage();}


2. رفع ملف (PutObject)



رفع ملف من نظام الملفات المحلي إلى S3:



try {    $result = $s3Client->putObject([        'Bucket' => 'my-unique-bucket-name',        'Key'    => 'images/photo.jpg',         // مسار الكائن في الحاوية        'SourceFile' => '/local/path/to/photo.jpg', // الملف المحلي        'ACL'    => 'public-read',               // صلاحيات الوصول    ]);    echo "تم رفع الملف. الرابط: " . $result['ObjectURL'];} catch (Aws\\Exception\\AwsException $e) {    echo "خطأ في الرفع: " . $e->getMessage();}


يمكنك أيضًا رفع البيانات مباشرة من سلسلة نصية باستخدام المعامل Body:



$result = $s3Client->putObject([    'Bucket' => 'my-unique-bucket-name',    'Key'    => 'data.txt',    'Body'   => 'محتوى الملف',]);


3. تنزيل ملف (GetObject)



يمكن تنزيل ملف من S3 إلى ملف أو إلى متغير:



// إلى ملف$result = $s3Client->getObject([    'Bucket' => 'my-unique-bucket-name',    'Key'    => 'images/photo.jpg',    'SaveAs' => '/local/path/to/downloaded_photo.jpg',]);

// إلى متغير$result = $s3Client->getObject([ 'Bucket' => 'my-unique-bucket-name', 'Key' => 'data.txt',]);$content = $result['Body']->getContents();echo $content;


4. حذف ملف (DeleteObject)



try {    $                    

توصيات