どんな記事? Laravel …
LaravelでIntervention Image v3が使えない!?v2にロールバックした話
Laravelプロジェクトで画像アップロードを実装中に、Intervention Image v3を使おうとしたところ…
use Intervention\Image\Facades\Image; Image::make($photo)->resize(1200, null)->save($path);
なんと 「Class 'Intervention\Image\Facades\Image’ not found」 が出る事態に! Composerでインストールも確認済みなのに、なぜかLaravelが認識してくれませんでした。
原因を探る
調べてみると、v3では Facadesの自動解決やLaravel 12との互換性 に微妙な問題があることが判明。 公式ドキュメントにも v2 との互換性や Facade の扱いの違いに注意、と書かれています。
composer show intervention/image
で確認しても v3 が入っており、通常の use Intervention\Image\Facades\Image; では読み込めない状態でした。
解決策:v2へのロールバック
そこで、思い切って v2 に戻すことにしました。
composer require intervention/image:^2.7
- Laravelの Facade も v2スタイルに戻る
Image::make()が問題なく使える- 既存のコードもほぼそのまま動作
結果、画像アップロード処理が復活しました。
ポイント
ImageManagerStaticを使えば v3 でも動くことはあるが、Laravel 12 の Facade との組み合わせでトラブルになりやすい- v2に戻すとキャッシュや Facade の問題が解消される
- Composer で明示的にバージョン指定しておくと安心
まとめ
- v3は最新だけど、Laravel 12や既存コードとの互換性問題がある
- 激レア案件だけど、v2にロールバックすることで短期間で問題解決可能
- LaravelでIntervention Imageを使う場合は バージョン管理とFacadeの扱いに注意
💡 Tip: 更新処理で古い画像が削除されない場合は、DBのキャストや update() に含める項目にも注意。
今回の案件では、
photos を $validated に含めずに処理することで安全に古い画像を削除できました。



ディスカッション
コメント一覧
まだ、コメントがありません