商品图片不显示的排查路径
先做一件事:打开浏览器开发者工具(F12),切到 Network,刷新页面,点那张裂开的图。
看状态码,它直接告诉你是哪一类问题。
404:文件不在
图片路径请求到了服务器,但文件不存在。
# 用开发者工具里看到的路径去服务器上找
ls -l /www/wwwroot/yourdomain.com/public/assets/cache/general/image/
- 目录是空的 → 迁移站点时漏传了附件目录
- 文件在但路径对不上 → 数据库里存的路径和实际不符,通常是换过目录结构
:::warning 迁移必带附件目录 只导数据库不带文件,所有图片都会 404。见站点搬家清单。 :::
403:权限不够
文件在,但 Nginx 读不了。
chown -R www:www /www/wwwroot/yourdomain.com/public/assets
chmod -R 755 /www/wwwroot/yourdomain.com/public/assets
也可能是父目录没有执行权限——权限要一路检查上去,不只是文件本身。
200 但图片还是不显示
状态码正常说明文件拿到了,问题在别处:
- 返回的其实是 HTML — 点 Response 看看内容,可能是被 WAF 拦截返回了拦截页
- 文件损坏 — 上传过程中断了,重新上传
- 混合内容 — 站点是 HTTPS 但图片是 HTTP,浏览器会拦。Console 里会有
Mixed Content警告
请求根本没发出
Network 里压根看不到这个请求,说明 HTML 里的 src 就是空的——那是数据层面的问题,商品记录里图片字段是空的,重新编辑商品上传即可。
上传时就失败
如果是「传不上去」而不是「传上去了不显示」,查这几项:
| 检查项 | 命令 / 位置 |
|---|---|
| PHP 上传大小限制 | upload_max_filesize、post_max_size |
| Nginx 请求体限制 | client_max_body_size 32m; |
| 上传目录可写 | ls -ld public/assets/cache |
| 磁盘空间 | df -h |
四项里 Nginx 的 client_max_body_size 最容易漏——PHP 那边改了,Nginx 这边没改,表现为大图传不上、小图正常。
评论 0