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

Symfony 3.1执行cache:clear后图片404问题求助

解决Symfony 3.1.10 + LiipImagineBundle缓存图片404问题

我之前维护老Symfony项目时也碰到过类似的LiipImagine缓存坑,咱们一步步来拆解解决:

核心关键:原图片不存在,缓存图根本没法生成

首先得明确一个点:LiipImagine是基于原图片生成处理后的缓存图的,没有原文件的话,就算清空一万次缓存也没用。

你的请求URL /media/cache/resolve/avatar/uploads/product/5ab37697e4da2.jpg 对应的原图片路径应该是 web/uploads/product/5ab37697e4da2.jpg(因为你配置的resolvers是默认的web_path,Bundle会把resolve/后面的路径直接映射到web目录下的对应文件)。你说找不到原图片,这是当前最致命的问题——必须先找回这个原文件,或者确认它是不是存在其他目录里(比如app/uploads?)。

生产环境缓存清理的正确姿势

你之前清理的是dev环境缓存(/var/cache/dev),但生产环境的缓存是单独存放在/var/cache/prod的,确实需要清理生产环境的缓存,操作步骤和注意事项如下:

执行清理命令

在项目根目录运行:

# 推荐:清理生产环境缓存并预热,避免用户首次访问卡顿
php bin/console cache:clear --env=prod

# 如果不需要预热,也可以用这个
php bin/console cache:clear --env=prod --no-warmup

操作注意事项

  • 权限是老大难:一定要用和web服务器相同的用户(比如www-data)执行命令,不然缓存目录或媒体缓存目录很容易出现权限拒绝的问题。可以用sudo -u www-data php bin/console ...切换用户执行。
  • 选对时间:生产环境清理缓存会短暂影响应用性能,尽量在用户访问量低的时段操作。
  • 别忘了OPcache:如果你的服务器开了OPcache,清理完Symfony缓存后最好重启PHP-FPM或者手动清一下OPcache,避免旧的缓存代码残留。

LiipImagine缓存图生成的排查点

如果原图片确实存在,但访问URL还是404,那得检查这几个地方:

  1. 路由配置:确认app/config/routing.yml里已经引入了LiipImagine的路由:
    liip_imagine:
        resource: "@LiipImagineBundle/Resources/config/routing.xml"
    
  2. Web服务器重写规则:检查web/.htaccess(Apache)或者Nginx的配置,确保/media/cache/resolve/*的请求能正确转发到Symfony的入口文件app.php。
  3. 媒体缓存目录权限:web/media/cache目录必须有写入权限,LiipImagine要把生成的缓存图写到这里。可以执行chmod -R 775 web/media/cache或者调整目录所属用户来解决权限问题。

解决prod.log无记录的问题

生产环境默认日志级别是error,LiipImagine的一些警告(比如原图片不存在)可能没被记录。你可以临时修改app/config/config_prod.yml的日志级别来获取更多信息:

monolog:
    handlers:
        main:
            level: debug
            # 其他配置保持不变

修改后清理生产环境缓存,重新访问图片URL,再查看var/logs/prod.log,应该能看到具体的错误提示(比如“原图片不存在”或者“无法写入缓存目录”)。

总结步骤

  1. 找回或确认原图片web/uploads/product/5ab37697e4da2.jpg的存在性和正确路径;
  2. 用正确的用户执行生产环境缓存清理命令;
  3. 检查web/media/cache目录的写入权限;
  4. 访问图片URL,测试是否自动生成缓存图;
  5. 若仍失败,临时开启debug日志排查具体错误。

内容的提问来源于stack exchange,提问作者Olivier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:58:37