需正确安装并初始化验证码扩展包:一、TP6/8用composer require topthink/think-captcha;二、TP5.0用=1.;三、TP5.1用=2.;四、运行php think captcha:install;五、启用Session中间件。

如果您在ThinkPHP项目中需要启用图形验证码功能,但无法正常显示或校验,则很可能是未正确安装或初始化验证码扩展包。以下是完成该任务的多种方法:
一、使用 Composer require 安装最新稳定版
此方法适用于已存在且可正常运行的 ThinkPHP 6 或 ThinkPHP 8 项目,通过 composer require 命令将扩展包直接注入当前项目依赖树,并自动更新自动加载映射。
1、打开终端(Windows 使用 CMD/PowerShell,macOS/Linux 使用 Terminal)。
2、切换至 ThinkPHP 项目的根目录(即包含 composer.json 文件的目录)。
立即学习“PHP免费学习笔记(深入)”;
3、执行命令:composer require topthink/think-captcha。
4、等待安装完成,确认 vendor/topthink/think-captcha 目录已生成。
二、针对 ThinkPHP 5.0 的指定版本安装
ThinkPHP 5.0 框架不兼容高版本验证码包,必须强制锁定 1.* 分支,否则将因类签名不匹配导致 Fatal error。
1、进入 ThinkPHP 5.0 项目根目录(含 composer.json)。
2、执行命令:composer require topthink/think-captcha=1.*。
3、安装完毕后,检查 vendor/topthink/think-captcha/src/Captcha.php 是否存在且可被自动加载。
三、针对 ThinkPHP 5.1 的兼容性安装
ThinkPHP 5.1 起验证码组件正式脱离核心,需独立安装 2.* 系列版本,该版本支持更丰富的配置项和门面调用方式。
1、确保项目为 ThinkPHP 5.1 或更高小版本(如 5.1.40)。
2、在项目根目录执行:composer require topthink/think-captcha=2.*。
3、验证是否成功注册服务提供者:检查 config/app.php 中 providers 数组是否含 \think\captcha\CaptchaServiceProvider::class。
四、手动发布资源与配置文件
无论采用上述哪种安装方式,扩展包均不会自动复制前端资源与默认配置,必须显式执行安装脚本以生成 config/captcha.php 及 public/static/captcha/ 目录结构。
1、在项目根目录下运行:php think captcha:install。
2、检查 config/captcha.php 文件是否已生成,若不存在则需手动创建并写入基础配置数组。
3、确认 public/static/captcha/ 下存在 captcha.js、captcha.css 及 images 子目录。
五、启用 Session 中间件(关键前置条件)
验证码校验严重依赖 Session 存储生成的验证码值,若未启用 Session 初始化中间件,调用 Captcha::check() 将始终返回 false。
1、打开项目根目录下的 app/middleware.php(ThinkPHP 6/8)或 application/middleware.php(ThinkPHP 5.x)。
2、在 return 数组中加入:\think\middleware\SessionInit::class。
3、保存文件后清除 runtime/cache/ 下缓存,重启 Web 服务器或内置服务。



















