Laravel 已配置storage:link软链 调用file_get_contents读图片报文件不存在问询
报错根本原因
- 核心问题是
storage_path辅助函数的使用不符合路径拼接规则:Laravel 中storage_path()默认返回项目根目录下storage/文件夹的绝对路径,你传入images作为参数拼接时,得到的路径是storage/images/[文件名],但你的图片实际存储在storage/app/public/images/目录下,拼接路径遗漏了app/public两层目录,因此file_get_contents找不到对应文件。 - 你认为dd打印的路径符合预期,本质是混淆了物理存储路径和web访问软链路径:
storage:link命令仅会在项目public目录下创建指向storage/app/public的软链,仅用于web端通过url访问资源,不会修改本地文件的实际存储位置,本地读取文件时必须使用完整的物理路径。
修复方案
方案1:直接补全物理路径
$path = storage_path('app/public/images' . DIRECTORY_SEPARATOR . $new_file);
方案2:使用public磁盘的path方法,避免手动拼写路径出错
// 需先引入Illuminate\Support\Facades\Storage $path = Storage::disk('public')->path('images/' . $new_file);
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

