thinkphp数据库配置关键在于位置准确、格式规范、环境适配;tp6/7优先用项目根目录的.env文件(db_host等全大写下划线命名,无bom、无空格),或config/database.php中通过env()读取并包裹于connections数组内,charset必须为utf8mb4,敏感信息严禁硬编码。

ThinkPHP 的数据库配置关键在于位置准确、格式规范、环境适配。新版(6.x/7.x)和旧版(5.x)配置方式不同,需先确认你用的是哪个版本,再按对应结构填写参数。
确认配置文件位置与格式
ThinkPHP 6/7 使用 .env 文件或 config/database.php 配置;ThinkPHP 5.x 主要用 config/database.php。
- TP6/7 推荐优先使用 .env:在项目根目录下创建或编辑该文件,添加如下内容(无需引号包裹值,除非含空格):
DATABASE_TYPE=mysql DATABASE_HOST=127.0.0.1 DATABASE_PORT=3306 DATABASE_NAME=thinkphp_db DATABASE_USER=root DATABASE_PASS=your_password DATABASE_PREFIX=tp6_
- 若用 PHP 配置文件(如
config/database.php),需返回数组,且注意键名大小写(TP6+ 默认是小驼峰,如hostname而非host):
'mysql' => [
'type' => 'mysql',
'hostname' => '127.0.0.1',
'database' => 'thinkphp_db',
'username' => 'root',
'password' => 'your_password',
'hostport' => '3306',
'prefix' => 'tp6_',
'charset' => 'utf8mb4',
'debug' => true,
],
必须校验的核心参数
漏填或填错以下任一字段都可能导致连接失败或乱码:
-
type:必须为
mysql、pgsql、sqlite等官方支持类型,不能拼错 - hostname 和 database:确保数据库服务已运行,且该库真实存在
-
username 和 password:注意权限——MySQL 用户需被授权访问目标库(例如:
GRANT ALL ON thinkphp_db.* TO 'root'@'localhost';) -
charset:推荐设为
utf8mb4,避免 emoji 或生僻字存储异常 -
prefix:若表名带统一前缀(如
tp6_user),此处设置后模型中无需重复写
多环境配置要点
开发、测试、生产环境应隔离数据库配置:
- TP6/7 支持
.env.development/.env.production,通过APP_ENV自动加载 - TP5.x 可用
config/database.php中的条件判断,例如:if (APP_DEBUG) { /* 开发配置 */ } else { /* 生产配置 */ } - 敏感信息(如密码)切勿硬编码进 Git 仓库;建议将
.env加入.gitignore
验证是否生效
改完配置后别直接上线,先快速验证:
- 执行命令行测试:
php think run启动内置服务器,访问首页看是否有数据库错误提示 - 在控制器中临时加一句:
dump(\think\facade\Db::query('SELECT VERSION()'));,能输出 MySQL 版本即说明连通 - 查看日志:
runtime/log/下的最新日志,搜索Connection refused或Access denied可快速定位问题
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











