Laravel 10上传图片报错“Image source not readable”排查求助
解决Laravel图片上传“Image source not readable”错误
核心问题:文件路径拼接错误
你代码里的路径拼接逻辑有误,导致Intervention Image找不到图片文件。
Laravel的public磁盘默认存储位置是storage/app/public,而public_path()指向的是项目根目录下的public文件夹。你用public_path("/storage/app/{$imagePath}")得到的路径是public/storage/app/uploads/xxx,这和文件实际存储的storage/app/public/uploads/xxx完全不符。
修正代码
把public_path替换为storage_path,直接指向文件实际存储的目录:
$imagePath = request('image')->store('uploads', 'public'); // 用storage_path获取正确的文件路径 $image = Image::make(storage_path("app/public/{$imagePath}"))->fit(1200, 1200); $image->save(); auth()->user()->ads()->create([ 'image' => $imagePath ]);
其他排查方向
验证文件上传状态
在处理图片前,先确认文件是否有效上传,避免空文件或无效文件导致的错误:if (!request()->hasFile('image') || !request('image')->isValid()) { return back()->withErrors(['image' => '上传的图片无效或未选择文件']); }检查目录权限
即便之前功能正常,也可能出现目录权限变更的情况。确保storage/app/public/uploads目录具备读写权限:# Linux系统下设置权限 chmod -R 755 storage/app/public chown -R www-data:www-data storage/app/public重新生成存储符号链接
虽然你已完成文件夹关联,仍可重新生成一次符号链接,确保public/storage正确指向storage/app/public:php artisan storage:link
内容的提问来源于stack exchange,提问作者user21942112
相关产品推荐
相关产品推荐

