تعد Amazon Web Services (AWS) منصة قوية تقدم مجموعة واسعة من الخدمات للمطورين والشركات. ومن بين هذه الخدمات، تعد Amazon Simple Storage Service (S3) واحدة من أكثر الخدمات شهرةً واستخدامًا على نطاق واسع. للتفاعل مع S3 برمجيًا، يمكنك استخدام AWS SDK لـ PHP. في هذه المقالة، سنرشدك خلال عملية تكوين AWS SDK لـ PHP مع S3.
قبل أن نبدأ، تأكد من أن لديك ما يلي:
لتثبيت AWS SDK لـ PHP، يمكنك استخدام Composer. قم بتشغيل الأمر التالي في جهازك الطرفي:
composer require aws/aws-sdk-php
سيعمل هذا الأمر على تثبيت أحدث إصدار من AWS SDK لـ PHP في مشروعك.
بمجرد تثبيت SDK، يتعين عليك تكوينه باستخدام معرف مفتاح الوصول إلى AWS ومفتاح الوصول السري. يمكنك القيام بذلك عن طريق إنشاء ملف تكوين أو عن طريق تعيين متغيرات البيئة.
قم بإنشاء ملف جديد باسم config.php في مشروعك وأضف الكود التالي:
'us-east-1', 'version' => 'latest', 'credentials' => [ 'key' => 'YOUR_ACCESS_KEY_ID', 'secret' => 'YOUR_SECRET_ACCESS_KEY', ] ]); $s3Client = $sdk->createS3();
استبدل YOUR_ACCESS_KEY_ID و YOUR_SECRET_ACCESS_KEY بمعرف مفتاح وصول AWS الفعلي ومفتاح الوصول السري.
بدلاً من ذلك، يمكنك تعيين معرف مفتاح وصول AWS ومفتاح الوصول السري كمتغيرات بيئة:
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
ثم قم بإنشاء عميل S3 كما يلي:
'us-east-1', 'version' => 'latest', ]); $s3Client = $sdk->createS3();
هل أنت مستعد لمعرفة المزيد حول AWS وPHP؟ تحقق من مقالاتنا الأخرى حول تكوين AWS SSO وإصلاح أخطاء رفض إذن laravel.
الآن بعد أن قمت بتكوين AWS SDK لـ PHP مع S3، يمكنك البدء في استخدامه للتفاعل مع مجموعات S3 الخاصة بك. فيما يلي مثال لكيفية إدراج جميع المجموعات الموجودة في حسابك:
$buckets = $s3Client->listBuckets(); foreach ($buckets['Buckets'] as $bucket) { echo $bucket['Name'] . PHP_EOL; }
بالتأكيد، فيما يلي بعض الأمثلة الإضافية وأفضل الممارسات لاستخدام AWS SDK لـ PHP مع S3.
لتحميل ملف إلى حاوية S3، يمكنك استخدام طريقة putObject. إليك مثال:
$bucketName = 'my-bucket'; $keyName = 'my-file.txt'; $filePath = '/path/to/my-file.txt'; $result = $s3Client->putObject([ 'Bucket' => $bucketName, 'Key' => $keyName, 'SourceFile' => $filePath, ]); echo $result['ObjectURL'] . PHP_EOL;
سيقوم هذا الرمز بتحميل الملف الموجود في /path/to/my-file.txt إلى مجموعة my-bucket وطباعة عنوان URL للملف الذي تم تحميله.
لتنزيل ملف من حاوية S3، يمكنك استخدام طريقة getObject. إليك مثال:
$bucketName = 'my-bucket'; $keyName = 'my-file.txt'; $filePath = '/path/to/downloaded-file.txt'; $result = $s3Client->getObject([ 'Bucket' => $bucketName, 'Key' => $keyName, 'SaveAs' => $filePath, ]); echo $result['ContentLength'] . ' bytes downloaded.' . PHP_EOL;
سيقوم هذا الرمز بتنزيل الملف بالمفتاح my-file.txt من مجموعة my-bucket وحفظه في /path/to/downloaded-file.txt.
لإدراج الكائنات في حاوية S3، يمكنك استخدام طريقة listObjects. إليك مثال:
$bucketName = 'my-bucket'; $result = $s3Client->listObjects([ 'Bucket' => $bucketName, ]); foreach ($result['Contents'] as $object) { echo $object['Key'] . PHP_EOL; }
سيقوم هذا الرمز بسرد جميع الكائنات الموجودة في مجموعة دلوتي وطباعة مفاتيحها.
إليك بعض أفضل الممارسات التي يجب وضعها في الاعتبار عند استخدام AWS SDK لـ PHP مع S3:
بالتأكيد، إليك بعض النصائح الإضافية لاستخدام AWS SDK لـ PHP مع S3 في Laravel.
يحتوي Laravel على دعم مدمج لـ AWS SDK لـ PHP، مما يجعل من السهل استخدام S3 في تطبيقات Laravel الخاصة بك. فيما يلي بعض النصائح لاستخدام SDK مع Laravel:
composer require aws/aws-sdk-php
AWS_ACCESS_KEY_ID=your_access_key_id AWS_SECRET_ACCESS_KEY=your_secret_access_key AWS_DEFAULT_REGION=your_region
use Illuminate\Support\Facades\Storage; // Upload a file Storage::disk('s3')->put('my-file.txt', file_get_contents('/path/to/my-file.txt')); // Download a file Storage::disk('s3')->download('my-file.txt', '/path/to/downloaded-file.txt'); // List the objects in a bucket $objects = Storage::disk('s3')->listContents('my-bucket'); foreach ($objects as $object) { echo $object['path'] . PHP_EOL; }
use Illuminate\Support\ServiceProvider; use League\Flysystem\AwsS3V3\AwsS3V3Adapter; use Aws\S3\S3Client; class S3ServiceProvider extends ServiceProvider { public function register() { $this->app->singleton('filesystems.disks.s3', function ($app) { return new AwsS3V3Adapter( new S3Client([ 'region' => config('filesystems.disks.s3.region'), 'version' => 'latest', 'credentials' => [ 'key' => config('filesystems.disks.s3.key'), 'secret' => config('filesystems.disks.s3.secret'), ], ]), config('filesystems.disks.s3.bucket') ); }); } }
use Illuminate\Support\Facades\Storage; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; class UploadFile implements ShouldQueue { use InteractsWithQueue; protected $filePath; public function __construct($filePath) { $this->filePath = $filePath; } public function handle() { Storage::disk('s3')->put('my-file.txt', file_get_contents($this->filePath)); } }
إليك بعض أفضل الممارسات التي يجب وضعها في الاعتبار عند استخدام AWS SDK لـ PHP مع S3 في Laravel:
في هذه المقالة، قمنا بتغطية أساسيات تكوين AWS SDK لـ PHP مع S3 وقدمنا بعض الأمثلة الإضافية وأفضل الممارسات لاستخدام SDK مع S3. لقد قدمنا أيضًا بعض النصائح الإضافية لاستخدام SDK مع S3 في Laravel. باتباع هذه الإرشادات، يمكنك التأكد من أن تطبيقات PHP الخاصة بك آمنة وفعالة وقابلة للتطوير.
هل تريد معرفة المزيد عن AWS وPHP؟ اطلع على مقالاتنا الأخرى حول DevOps Mind.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3