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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:42:44