laravel-admin 图片上传后不显示,90% 是路径配置和软链接没对上:需清缓存、重建 storage:link 并验证指向,确保 app_url 为完整域名,public 磁盘 url 配置正确,或改用专用 admin 磁盘并配合 asset() 渲染相对路径。

laravel-admin 图片上传后不显示,90% 是路径配置和软链接没对上,不是编辑器或前端问题。
storage:link 创建了但图片还是 404
常见现象:上传成功、storage/app/public/ 里有文件、浏览器访问 /storage/xxx.jpg 返回 404。根本原因不是链接没建,而是链接指向错、缓存没清、或 APP_URL 干扰了 URL 生成。
- 先手动删掉
public/storage(别删storage/app/public) - 运行
php artisan optimize:clear—— 这步漏掉会导致旧缓存继续用坏链接 - 再执行
php artisan storage:link,确认终端输出The [public/storage] link has been connected to [storage/app/public]. - 最后在终端跑
ls -la public/storage,看它是否真实指向../storage/app/public
laravel-admin 配置里 disk 指向 public 但实际用了自定义路径
laravel-admin 默认用 'disk' => 'public',但它依赖 config/filesystems.php 中 public 磁盘的 url 配置。如果你改过 public 磁盘的 root 或 url,或者项目部署在子目录(如 https://site.com/admin),asset() 就会拼出错误前缀。
- 检查
config/filesystems.php里public磁盘的url是否为env('APP_URL').'/storage' - 确保
.env中APP_URL是完整域名(如https://your-site.com),不能是http://localhost或留空 - 更稳妥的做法是新增一个专用磁盘(比如叫
admin),把root设为public_path('upload'),然后在config/admin.php中设'disk' => 'admin'
富文本编辑器插入的图片 src 是相对路径但被当成绝对路径处理
编辑器(如 laravel-admin 内置的 UEditor 或 tinymce)保存 HTML 时,常把 src="/upload/xxx.jpg" 存进数据库。如果服务器根目录不是 Laravel 的 public/,这个路径就失效——比如共享主机把 Laravel 放在 /home/user/myapp,而 Web 可访问路径是 /home/user/public_html。
- 不要在数据库里存带域名的绝对 URL,只存相对路径(如
upload/xxx.jpg) - 视图中用
asset($imagePath)渲染,而不是直接拼url('/'.$imagePath) - 如果必须用自定义上传目录(如
public/upload),确保该目录存在且可写,并在 Nginx/Apache 配置中没屏蔽该路径
真正卡住人的地方,往往不是“怎么配”,而是“配完没清缓存”或“链接重建后没验证是否真生效”。每次改完路径,务必在终端执行 ls -la public/storage 和 curl -I http://yoursite.com/storage/test.jpg 看响应头,比反复刷页面快得多。











