必须依次执行php artisan config:clear、view:clear、cache:clear三命令,因Laravel缓存分层独立,缺一不可;config:clear删配置缓存文件,view:clear清编译视图,cache:clear清应用数据缓存,才能确保升级后视图更新生效。

升级 Laravel 11 后,你修改了 resources/views/home.blade.php,刷新页面却还是旧内容,控制器返回正常、路由能访问、.env 已生效,问题卡在缓存层——这不是代码没改,是缓存没清干净。
确认是否启用配置缓存
执行 php artisan config:cache 后,Laravel 会把所有 config/*.php 和 .env 解析结果合并写入 bootstrap/cache/config.php。这个文件一旦存在,config() 就不再读原始文件,而是直接返回缓存数组。
运行 ls -l bootstrap/cache/config.php,如果文件存在且修改时间早于你升级 Laravel 的时间,说明它还在用旧版本的配置解析逻辑——Laravel 11 对 env() 解析、配置合并规则有变更,旧缓存会跳过新机制。
这一步必须做:先删旧缓存,再重生成,否则视图路径、debug 模式、view.compiled 路径等关键项都可能错位。
清除三类核心缓存
按顺序执行以下命令:
① php artisan config:clear → 强制删除 bootstrap/cache/config.php;
② php artisan view:clear → 清空 storage/framework/views/ 下所有编译后的 .php 视图文件;
③ php artisan cache:clear → 清除通用应用缓存(如 Redis 或 file 驱动中残留的视图键、blade 编译指纹)。
【注意】三者缺一不可:config:clear 不影响 view:clear,view:clear 也不触发 config 重载,cache:clear 更不自动清理前两者。
验证视图是否真正重新编译
方法一:手动触发编译
访问任意 Blade 页面(比如 /login),然后立刻检查 storage/framework/views/ 目录下是否有新生成的 PHP 文件,文件名含哈希值(如 abc123.php)。若没有,说明 view:clear 后 Laravel 没重新编译——可能是 APP_DEBUG=false 且未启用 view cache,或 storage 权限不足导致写入失败。
方法二:强制重编译全部视图
运行 php artisan view:cache,该命令会遍历 resources/views/ 下所有 .blade.php 文件,逐一编译并写入 storage/framework/views/。它比单次访问触发更彻底,适合升级后批量重建。
生产环境部署时自动缓存配置
在部署脚本末尾加入:
if [ "$APP_ENV" = "production" ]; then php artisan config:cache && php artisan view:cache; fi
这行命令确保每次上线都用最新配置和视图逻辑启动。Laravel 11 默认禁用 .env 中的 env() 调用在 config/*.php 中,所以 config:cache 前必须确认所有配置已静态化——比如把 config/app.php 中的 'name' => env('APP_NAME', 'Laravel') 改为 'name' => $_ENV['APP_NAME'] ?? 'Laravel' 或直接填死值。
【关键前提】config:cache 失败时不会报错退出,只会静默跳过,导致后续请求加载不到配置——务必检查命令执行后 bootstrap/cache/config.php 是否真实生成且可读。



















