配置不生效八成是config缓存未清:Laravel启动时读bootstrap/cache/config.php而非实时解析config/或.env,改完需执行php artisan config:clear删除该文件;生产环境还需再运行config:cache重建缓存,并建议顺带view:clear、cache:clear、route:clear确保彻底更新。

配置不生效,八成是 config 缓存没清。Laravel 启动时默认读取 bootstrap/cache/config.php 这个编译后的缓存文件,而不是实时解析 config/ 下的 PHP 文件或 .env —— 所以改完 .env 或 config/app.php,不清理缓存就等于白改。
怎么确认是 config 缓存导致的?
直接检查项目根目录下的 bootstrap/cache/config.php 文件是否存在。如果该文件存在,且你最近改过 .env(比如 APP_DEBUG=true)或某个配置项(如 MAIL_MAILER=smtp),但页面/日志里仍显示旧值,基本就是它在“挡路”。也可以临时加一行测试代码:dd(config('app.debug')); 看输出是否和 .env 一致。
如何安全清除 config 缓存?
运行这条命令即可删除缓存文件:
-
php artisan config:clear—— 它会删掉bootstrap/cache/config.php,之后所有请求都会重新加载原始配置文件 - 开发环境通常只需这一步;改完
.env后立刻执行,90% 的“不生效”问题当场解决 - 注意:该命令不会报错,即使
config.php本来就不在,也会提示 “Configuration cache cleared!”
生产环境还需要重新生成缓存
清完只是“放开闸门”,要让新配置真正被使用,还得重建缓存:
- 先运行
php artisan config:clear - 再运行
php artisan config:cache—— 它会把config/下所有文件合并成新的config.php - ⚠️ 注意:
config:cache不支持闭包、匿名函数或依赖容器的逻辑,否则会报Unable to serialize closure - 多服务器部署时,每台机器都要单独执行这两步
顺手一起清理更稳妥
单清 config 缓存有时还不够,尤其遇到视图未更新、路由 404 或缓存数据还是旧的,建议按顺序补上:
-
php artisan view:clear—— 清已编译的 Blade 模板 -
php artisan cache:clear—— 清应用层缓存(如Cache::put()存的数据) - 路由缓存已非常规操作:Laravel 9+ 默认不缓存路由,只在你主动执行过
php artisan route:cache后才需route:clear


















