thinkphp 8 验证码需手动引入 topthink/think-captcha 扩展包,须确保 php ≥ 8.1 及 openssl、gd、session 扩展启用,安装后运行 php think captcha:install 发布配置与资源,并在中间件启用 sessioninit,模板中用 {:captcha_img()} 显示、captcha_check() 校验。

ThinkPHP 8 验证码功能不是内置的,必须通过 topthink/think-captcha 扩展包手动引入。安装不难,但版本匹配、扩展启用、资源发布三个环节缺一不可,否则会出现“图片不显示”“校验总失败”“Class not found”等问题。
确认环境与前置依赖
TP8 要求 PHP ≥ 8.1,并且以下 PHP 扩展必须启用:
-
openssl:用于随机数生成和安全操作,若未开启,
composer require可能报错或验证码无法生成;打开php.ini,取消注释extension=openssl -
gd:图形处理核心,验证码图片绘制依赖它;同样在
php.ini中启用extension=gd - session:验证码值默认存于 Session,必须启用 Session 中间件(后续步骤会配置)
用 Composer 安装扩展包
进入 ThinkPHP 8 项目根目录(含 composer.json 和 think 可执行文件),运行:
composer require topthink/think-captcha
该命令会自动拉取兼容 TP8 的最新稳定版(当前为 4.x 系列)。安装成功后,检查:
– vendor/topthink/think-captcha/ 目录是否存在
– vendor/autoload.php 已更新,支持自动加载 think\captcha\* 类
发布配置与静态资源
扩展包不会自动写入配置或前端文件,必须手动运行安装脚本:
php think captcha:install
执行后将生成:
-
config/captcha.php:可在此调整位数、字体大小、过期时间等(如'length' => 4、'expire' => 1800) -
public/static/captcha/:含captcha.js、captcha.css和images/子目录,供前端调用
启用 Session 并调用验证码
编辑 app/middleware.php,确保 Session 初始化中间件已启用:
\think\middleware\SessionInit::class
在模板中插入验证码显示代码:
<div>{:captcha_img()}</div>
或更灵活的写法(支持点击刷新):
<img src="%7B:captcha_src()%7D" onclick="this.src='{:captcha_src()}'+Math.random()" alt="验证码">
后端校验时使用:
if (!captcha_check($request->param('captcha'))) { // 验证失败 }
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











