近年ではウェブサービスのホスティング等にAWSを使用する事が当たり前になっています。
感覚的には弊社の受託案件では90%以上何らかのAWSサービスを使用しているはずです。
(AWSソリューションアーキテクトの勉強しよう..)
Laravel7でも.envに下記のようなAWSの設定の雛形があるのでいきなり.envにアクセスキー等を書いてS3を使用しようとしたら怒られました(笑)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
何をしようとしたか
S3上にある非公開のファイルをダウンロードしようとしました。
$result = Storage::disk(‘s3’)->get($file_name);
次のようなエラーが表示されました。
Error Class ‘League\Flysystem\AwsS3v3\AwsS3Adapter’ not found
解決方法
php -d memory_limit=-1 /usr/local/bin/composer require league/flysystem-aws-s3-v3 ~1.0
ドキュメントを読むとちゃんとライブラリが必要と記載されていました。
https://laravel.com/docs/7.x/filesystem#driver-prerequisites
laravel7では、league/flysystem-aws-s3-v3をインストールする事でS3を利用できるようになりました。
php -d memory_limit=-1の理由
単純にcomposer require league/flysystem-aws-s3-v3 ~1.0だと、PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted のエラーが発生しました。