0

0

PHP怎么写ThinkPHP框架密钥_PHP在ThinkPHP写密钥示例【汇总】

星夢妙者

星夢妙者

发布时间:2026-02-06 11:27:31

|

209人浏览过

|

来源于php中文网

原创

ThinkPHP 的密钥配置在 config/app.php 的 'key' 字段(TP6/7)或 'crypt_key'(TP5.1),需严格满足32位或16位长度要求,通过 php think key:generate 生成,禁用硬编码与常量定义。

php怎么写thinkphp框架密钥_php在thinkphp写密钥示例【汇总】

ThinkPHP 的密钥在哪配?不是写在代码里

ThinkPHP 本身没有叫 密钥 的独立配置项,所谓“密钥”实际指代的是加密相关的核心配置:主要是 app.key(用于对称加密如 Cookie、Session 加密)和 app.crypt_key(部分版本或自定义加密场景用)。它不靠手写函数生成后硬编码进控制器或模型,而是统一放在应用配置中。

常见误区是试图在 index.php 或某个控制器里调用 md5(time().rand()) 生成一串字符串赋值给某个变量——这既不安全也不生效。真正起作用的只有框架启动时读取的配置值。

TP6/TP7 怎么设置 app.key?看 config/app.php

ThinkPHP 6 和 7 默认使用 config/app.php 中的 key 字段作为加密密钥。这个值必须是 32 位长的字符串(AES-256-CBC 要求),否则运行时会报错:openssl_encrypt(): Key length error

  • 手动设置:直接修改 config/app.php 中的 'key' => 'your_32_length_string_here_12345678'
  • 推荐生成方式:终端执行 php think key:generate(TP6+ 自带命令),自动写入配置并输出结果
  • 不要用中文、空格、特殊符号;避免用时间戳、用户名等可预测内容
  • 上线后禁止提交明文密钥到 Git,应通过环境变量覆盖:'key' => $_ENV['APP_KEY'] ?? 'fallback'

为什么改了 key 后 Cookie 全失效?这是正常现象

app.key 变更会导致所有依赖它的加密数据无法解密,包括:think_cookiePHPSESSID(若开启加密 Session)、cache 中的加密缓存项。这不是 bug,是设计使然。

立即学习PHP免费学习笔记(深入)”;

SkyReels
SkyReels

SkyReels是全球首个融合3D引擎与生成式AI的AI视频创作平台

下载
  • 开发阶段频繁重置 key 可以接受;生产环境严禁随意改动
  • 若需平滑迁移,得配合旧 key 解密 + 新 key 重新加密的双密钥逻辑(需自行扩展 think\facade\Crypt
  • Session 存数据库或 Redis 时,如果用了 session.encrypt = true,同样受此影响

TP5.x 的 crypt_key 和 app.key 是啥关系?

ThinkPHP 5.1 使用的是 app.crypt_key(位于 config/app.php),长度要求是 16 位(对应 AES-128-CBC)。而 TP6+ 统一收归为 app.key 并强制 32 位。两者不兼容,升级时必须重设。

如果你在 TP5 项目里看到类似 Crypt::setKey('xxx') 的调用,说明用了手动覆盖逻辑——这种写法在 TP6+ 已废弃,Crypt 类不再允许运行时改 key,只认配置值。

最易被忽略的一点:有些老教程教你在 common.php 里写 define('APP_KEY', 'xxx'),这在 TP6+ 完全无效,框架根本不读这个常量。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

375

2024.04.10

thinkphp性能怎么样
thinkphp性能怎么样

thinkphp 是一款高性能的 php 框架,具备缓存机制、代码优化、并行处理和数据库优化等优势。官方性能测试显示,它每秒可处理超过 10,000 个请求,实际应用中被广泛用于京东商城、携程网等大型网站和企业系统。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

334

2024.04.10

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1512

2023.10.24

typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

112

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

343

2023.10.11

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6437

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

353

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

416

2024.02.23

Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 11.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号