config:clear 命令仅删除 bootstrap/cache/config.php 文件,不修改 .env、不重读配置、不影响已加载的运行时配置;修改 config/*.php 后必须执行该命令,否则 laravel 仍使用缓存旧值。

config:clear 命令到底清什么
它只删 bootstrap/cache/config.php 这个文件,不碰 .env、不重读配置项、也不影响运行时已加载的配置。换句话说:你改了 config/app.php 但没执行 config:clear,Laravel 仍会用缓存里的旧值——因为框架启动时优先加载这个 PHP 文件。
什么时候必须跑 config:clear
以下情况不执行就可能出问题:
- 修改了任意
config/*.php文件(比如加了个新cache.stores.redis.connection) - 部署后发现配置没生效,但
.env明明写对了(其实是缓存没更新) - 本地开发切分支后,配置结构变了,但页面报错说某个键不存在(缓存里还存着旧数组结构)
- CI/CD 流水线里,构建完要上线前没清缓存,导致生产环境加载错误配置
config:clear 和 config:cache 的关系
config:clear 是 config:cache 的逆操作,但二者不对称:
-
config:cache会把所有config/*.php合并成一个bootstrap/cache/config.php,且强制要求.env已加载完毕(否则缓存里全是env()调用,没实际值) -
config:clear不校验环境,删完就完事;但如果删完立刻访问接口,Laravel 会重新生成缓存——此时若.env有误或缺失,新缓存也会错 - 开发环境通常不用
config:cache,所以config:clear很少需要;但上线前清一次是保险做法
常见报错和绕过坑
执行 php artisan config:clear 报错?先看这些:
-
file_put_contents(bootstrap/cache/config.php): failed to open stream: No such file or directory→ 目录bootstrap/cache/权限不对,不是 Laravel 报错,是 PHP 写不了文件 - 清完还是旧配置 → 检查是否真删了
bootstrap/cache/config.php,有些部署脚本会跳过该步骤 - 清完访问报
Class 'App\Providers\AppServiceProvider' not found→ 顺手也跑下composer dump-autoload,config:clear不处理自动加载 - 在 Docker 容器里执行却没生效 → 确认命令是在正确容器内运行,且挂载卷没覆盖掉
bootstrap/cache/
缓存文件本身不加密不压缩,就是个 PHP 数组 return,但别手动编辑它——任何修改都会在下次 config:cache 时被覆盖。真正要改的永远是 config/*.php 或 .env。










