ThinkPHP部署时配置修改的核心是分清环境层级和生效时机,应优先修改项目根目录的.env文件并配合config/*.php中使用env()函数引用,避免直接硬编码或修改runtime缓存文件。

ThinkPHP部署时配置文件修改,核心不是“改哪几个文件”,而是分清环境层级和生效时机。直接改 config/ 下的 PHP 文件看似简单,但容易被缓存覆盖、不支持多环境切换,新手常因此反复刷新却没变化。
先改 .env 文件(最推荐,一劳永逸)
.env 是 ThinkPHP 6+ 官方唯一认可的运行前环境变量入口,所有动态配置都应从这里出发:
- 确保它放在项目根目录(和 public/ 同级),不是 public/.env 或 config/.env
- 复制 .example.env 重命名为 .env,全小写,无扩展名
- 键名必须全大写+下划线,例如:
APP_DEBUG=true、DB_HOST=127.0.0.1、DB_PORT=3306 - 在 config/database.php 等配置文件中用
env('DB_HOST', '127.0.0.1')引用,而不是硬编码
再调 config/ 下的 PHP 配置文件(按需补充)
这些文件本身不支持运行时修改,但可配合 .env 实现条件化配置:
-
config/app.php:控制调试模式、时区、路由、默认模块等,如把'app_debug' => false改为'app_debug' => env('APP_DEBUG', false) -
config/database.php:数据库连接参数,重点改'hostname'、'database'、'username'、'password'这几项,全部套上env() -
config/cache.php和config/session.php:若用 Redis 或 Memcached,记得同步更新 host/port
避开常见“伪修改”陷阱
很多新手以为改了就生效,结果访问还是旧配置,问题往往出在以下几点:
立即学习“PHP免费学习笔记(深入)”;
- 不要在 public/index.php 里写 Config::set() —— 此时应用尚未初始化,设置会被后续加载覆盖
- 不要手动编辑 runtime/config.php —— 这是缓存生成的只读文件,改了也会被下次请求重建
- 开启配置缓存后(php think optimize:config),.env 修改仍有效,但 config/*.php 的硬编码值会被固化 —— 所以务必优先用 env() 函数
- 改完 .env 或 config/ 文件后,务必清空 runtime/cache/ 和 runtime/config.php,否则旧缓存会干扰验证
验证是否真正生效
别只看页面有没有报错,要确认变量确实被载入:
- 在控制器中临时加一行:
dump($_ENV);或dump(env('DB_HOST')); - 访问
http://你的域名/public/index.php?s=/info(如已开启 debug),查看环境变量面板 - 执行命令行测试:
php think env:show(需安装 think-env 扩展或自定义命令)



















