清理 symfony 旧缓存可避免容器重建失败、路由异常及 twig 渲染错乱,须执行 php bin/console cache:clear --env=prod --no-warmup,并同步清理日志与缓存池;手动删除前需停进程、修权限、确认 .env.local 存在且非空。

清理 Symfony 项目中残留的旧缓存能避免容器重建失败、路由加载异常或 Twig 模板渲染错乱,尤其在切换分支、升级版本或修改配置后必须执行。
用 console 命令彻底清空系统缓存
这一步操作最直接,适用于开发与生产环境通用场景。
进入项目根目录,运行:
php bin/console cache:clear --env=prod --no-warmup
加 【--no-warmup】 是关键——它跳过自动预热,防止新缓存写入时因配置未就绪而报错;若你刚改完 services.yaml 或移除了某个 bundle,漏掉这个参数会导致 cache:warmup 失败并卡住整个命令。
如果提示 “Command 'cache:clear' is not defined”,说明你用的是 Symfony 3.4 或更早版本,需改用:
php app/console cache:clear --env=prod
连带清理日志与缓存池数据
仅清系统缓存不够,var/log/ 和 PSR-6 缓存池(如 cache.app)可能仍存脏数据,需同步处理。
方法一:分步执行
① 清日志:
php bin/console log:clear --env=prod --force
② 清指定缓存池:
php bin/console cache:pool:clear cache.app --env=prod
③ 强制刷新所有缓存适配器(含 Redis 或 FilesystemAdapter):
php bin/console cache:pool:clear cache.system cache.annotations cache.serializer --env=prod
方法二:一行搞定(推荐用于部署脚本)
APP_ENV=prod php bin/console cache:clear --no-warmup && APP_ENV=prod php bin/console log:clear --force && APP_ENV=prod php bin/console cache:pool:clear cache.app cache.system
手动删除前必须做的三件事
当 console 命令失效(如权限拒绝、PHP 进程崩溃),才考虑手动删文件,但必须先确认:
第一步:停掉所有正在写入 var/cache/ 或 var/log/ 的进程。
比如 PHP-FPM 子进程、supervisord 管理的队列消费者、或后台运行的 bin/console server:run。
第二步:检查当前用户是否对 var/ 目录有完整读写权限。
若无,先修复权限再删,否则会残留只读文件导致后续 cache:clear 失败。
第三步:确认 .env.local 文件存在且非空。
【.env.local 必须存在且不可为空,否则 Symfony 启动时会因找不到环境变量而崩溃】
确认完毕后,执行:
rm -rf var/cache/* var/log/*.log











