商品 CSV 显示导入成功,后台也出现了图片文件名,但前台主图和缩略图全部 404。继续重复导入只会制造更多重复 gallery 记录。要先分清原图没有复制进 media,还是原图存在但派生缓存图无法生成。
从一个失败 SKU 沿路径追踪
记录 CSV 中 base_image、small_image、thumbnail_image 的值,以及导入界面填写的 Images File Directory。现代 Magento 导入通常以 var/import/images 为图片基础目录,CSV 应使用相对路径。开头斜杠、大小写和子目录拼接错误非常常见。
find var/import/images -type f | head
find pub/media/catalog/product -type f -iname '*example*'
ls -ld pub/media pub/media/catalog pub/media/catalog/productLinux 区分大小写。CSV 写 /A/B/Image.JPG,文件实际是 a/b/image.jpg,开发者在不区分大小写的电脑上看不出问题,服务器会直接找不到。
原图存在,404 可能发生在缓存尺寸
分类页和商品页通常请求 pub/media/catalog/product/cache 下的派生图。清理图片缓存后,首次请求需要 PHP/GD 或 ImageMagick 重新生成。检查 Web 用户对 media 的读写权限、临时目录、图片格式和内存限制。
不要把整个 media 设置为 777。统一部署用户与 Web 用户的组权限,并确认新建文件继承正确组。损坏的 JPEG、超大 TIFF 或不支持的颜色空间也可能让缩放失败,日志里通常能看到具体异常。
多节点与 CDN 会让问题看起来随机
一台节点导入了原图,其他节点没有共享 media,请求经过负载均衡时就时好时坏。确认 media 是共享存储、对象存储,还是由发布任务同步。CDN 若缓存了 404,源站文件补齐后也可能继续返回旧失败,需要按 URL 精确清理。
验收时选主图、附加图和不同尺寸缩略图,各自请求原图与缓存图;连续命中不同节点;再新导入一个从未使用的文件名,确认无需人工 chmod 或清 CDN 就能显示。这样才证明导入链路修好,而不是手工补了一张图。

