Laravel Forge生产环境图片上传后无法显示的问题求助
Laravel Forge部署后图片上传无法显示的解决方法
问题分析
本地环境正常但生产环境图片出现404,核心原因是存储软链接未正确创建,且图片未存储到可公开访问的目录下。
解决步骤
1. 修复存储软链接
- 先删除项目public目录下无效的storage文件夹/链接:
cd /home/forge/your-domain.com/public rm -rf storage - 回到项目根目录重新创建软链接:
若Artisan执行异常,可直接用Linux命令手动创建(替换为你的实际项目路径):cd /home/forge/your-domain.com php artisan storage:linkln -s /home/forge/your-domain.com/storage/app/public /home/forge/your-domain.com/public/storage
2. 调整图片存储路径(关键)
当前代码将图片存在storage/app/categories(无法通过public访问),需修改为存储到storage/app/public目录下:
- 修改创建记录的代码:
$categoryword = Category::create([ // 其他字段保持不变 'image' => Storage::put('public/categories', $request->file('image')), ]); - 调整Blade视图的图片链接:
<img id="image" name="image" src="{{ Storage::url($categoryword->image) }}" alt="" height="400px" width="700px"/>Storage::url()会自动将public/前缀替换为storage/,生成正确的公开访问路径。
3. 修复目录权限
确保storage目录有正确的读写权限:
chmod -R 755 /home/forge/your-domain.com/storage chown -R forge:forge /home/forge/your-domain.com/storage
4. 验证效果
上传新图片后,检查storage/app/public/categories下是否存在目标图片,直接访问https://your-domain.com/storage/categories/[图片文件名],能正常打开则说明配置正确。
内容的提问来源于stack exchange,提问作者Jefferson Farid
相关产品推荐
相关产品推荐

