You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9集成Azure Blob存储报错:找不到PublicUrlGenerator接口

解决Laravel 9 + Azure Blob Storage 上传时的PublicUrlGenerator接口缺失错误

问题描述

基于Laravel 9开发API,使用matthewbdaly/laravel-azure-storage作为Azure Blob Storage驱动实现文件上传,运行时报错:

Error: Interface "League\Flysystem\UrlGeneration\PublicUrlGenerator" not found in file /var/www/html/vendor/league/flysystem-azure-blob-storage/AzureBlobStorageAdapter.php on line 35

错误原因

该错误源于Flysystem版本不兼容:
Laravel 9默认依赖Flysystem 3.x,而旧版本的matthewbdaly/laravel-azure-storage(如v2.x)适配的是Flysystem 2.x,导致适配器尝试调用Flysystem 3.x专属接口时找不到对应类。

解决方案

1. 安装适配Laravel 9的包版本

执行Composer命令,安装matthewbdaly/laravel-azure-storage的v3.x版本(专门适配Laravel 9和Flysystem 3):

composer require matthewbdaly/laravel-azure-storage:^3.0

如果之前安装过旧版本,先卸载再重新安装:

composer remove matthewbdaly/laravel-azure-storage && composer require matthewbdaly/laravel-azure-storage:^3.0

2. 清理Laravel缓存

安装完成后,清理配置和应用缓存,确保新依赖生效:

php artisan config:clear
php artisan cache:clear

3. 优化上传代码(可选但建议)

  • 去掉storeAs路径开头的斜杠,Flysystem路径不需要前置斜杠,避免生成异常路径:
// 原代码
$filePath = $request->file('asset')->storeAs('/image', $fileName, 'azure');
// 修改为
$filePath = $request->file('asset')->storeAs('image', $fileName, 'azure');
  • 确保.env中的AZURE_STORAGE_CONTAINER已填写正确的容器名称,否则会导致上传失败。

内容的提问来源于stack exchange,提问作者Kyaw Su Thway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:40:57