質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

0回答

562閲覧

S3へのファイルアップロードができない(Laravel8+heroku):Class "League\Flysystem\AwsS3v3\AwsS3Adapter" not found

sakamoto111

総合スコア0

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2022/05/28 06:54

概要

herokuにLaravel8(sail環境)で作成したサービスをデプロイしています。
ファイルストレージとしてS3を活用することを試みていますが、
Class "League\Flysystem\AwsS3v3\AwsS3Adapter" not foundによりファイルがアップロードできない状況です。

色々やってみたものの、他の対応が思いつかず、止まっている状況です。
対策をご存知の方がいらっしゃいましたらご教授いただけると幸いです。

作業時の参考ドキュメント等

エラーが発生した時点までの作業

0.前提(config/filesystems.php)

's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'endpoint' => env('AWS_ENDPOINT'), ],

1.パッケージのインストール

インストールしたのは、AWS SDK for PHPleague/flysystem-aws-s3-v3 - Packagistです。

$ ./vender/bin/sail composer require aws/aws-sdk-php $ ./vender/bin/sail composer require --with-all-dependencies league/flysystem-aws-s3-v3 "^1.0"

2.環境変数の設定

以下の環境変数の設定をheroku config:setコマンドにより行いました。

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION AWS_BUCKET AWS_USE_PATH_STYLE_ENDPOINT=false

3.ファイルアップロード処理

ファイルアップロード処理については、storeAsメソッドにより行っています。

$path = $image->storeAs($dir, $name, 's3');

ここでこの処理がうまくいくか、試してみたところ表題のエラーが発生しました。

やったこと

あるはずのものが無いと言われているので以下のような仮説を立て対応しました

  1. インストールできていない
  2. インストールできているが読み込めていない

エラー対応時に参考にしたもの

1.インストールの確認(ローカル)

まずcomposer.jsonを確認したところleague/flysystem-aws-s3-v3が見当たらない。

しかし、composer show -i | grep flyで調べてみると存在しており、バージョンも妥当。

$ ./vendor/bin/sail composer show -i | grep fly league/flysystem 1.1.9 Filesystem abstraction: Many fil... league/flysystem-aws-s3-v3 1.0.29 Flysystem adapter for the AWS S3...

再度composer requireしたり、composer installするも、インストール済みの表記が出るのみでエラーは解消せず。

2.use宣言

Usage | Aws S3 Adapter V3 - Flysystem
こちらのUsageを参考に該当するコントローラにuse宣言を追記。

use Aws\S3\S3Client; use League\Flysystem\AwsS3v3\AwsS3V3Adapter; use League\Flysystem\Filesystem;

->表題のエラーのまま改善せず。

3.インストールの確認(heroku)

heroku上でライブラリがインストールされていない可能性を考慮し、heroku run bashしてheroku内を確認

// 以下heroku内での操作 $ composer install // 略 $ composer show -i | grep fly You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages. dflydev/dot-access-data v3.0.1 Given a deep data structure, access data by dot notation. league/flysystem 1.1.9 Filesystem abstraction: Many filesystems, one API.

ここでleague/flysystem-aws-s3-v3が確認できなかったため、composer requireをheroku上で実行して再度確認

$ composer require --with-all-dependencies league/flysystem-aws-s3-v3 "^1.0" // 略 $ composer show -i | grep fly You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages. dflydev/dot-access-data v3.0.1 Given a deep data structure, access data by dot notation. league/flysystem 1.1.9 Filesystem abstraction: Many filesystems, one API. league/flysystem-aws-s3-v3 1.0.29 Flysystem adapter for the AWS S3 SDK v3.x

->表題のエラーのまま改善せず。

4.その他の取り組み

  • composer dump-autoload(herokun上):改善せず。
  • composer require aws/aws-sdk-php(heroku上):改善せず。
  • キャッシュクリア:改善せず

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問