其实很久之前刚学习tp5框架的时候就遇到了这个问题,解决完后一直没再出过问题,今天用以前的框架做新项目时又碰到了这个问题,这里记录一下
问题原因:
1、TP5本就存在这个bug
2、数据库连接不正常(项目连接数据库不正常时验证码也会不显示)
解决方法:
1、TP5自身bug,在TP5官网论坛是给了对应方法解决的、在获取验证码前清除一下缓存就行了
/* * 获取验证码 * */ public function getVerify() { $config = [ \'fontSize\' => 28, \'length\' => 4, \'useCurve\' => false, ]; ob_clean(); //每次获取验证码前都清除下缓存 $captcha = new Captcha($config); return $captcha->entry(); }
2、数据库连接不正常导致,检查下自己的数据库配置文件是否有问题,tp5数据库配置文件dababase.php
return [ // 数据库类型 \'type\' => \'mysql\', // 服务器地址 \'hostname\' => \'\', // 数据库名 \'database\' => \'\', // 用户名 \'username\' => root, // 密码 \'password\' => \'\', // 端口 \'hostport\' => \'3306\', // 连接dsn \'dsn\' => \'\', // 数据库连接参数 \'params\' => [], // 数据库编码默认采用utf8 \'charset\' => \'utf8\', // 数据库表前缀 \'prefix\' => \'ww_\', // 数据库调试模式 \'debug\' => true, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) \'deploy\' => 0, // 数据库读写是否分离 主从式有效 \'rw_separate\' => false, // 读写分离后 主服务器数量 \'master_num\' => 1, // 指定从服务器序号 \'slave_no\' => \'\', // 是否严格检查字段是否存在 \'fields_strict\' => true, // 数据集返回类型 \'resultset_type\' => \'array\', // 自动写入时间戳字段 \'auto_timestamp\' => true, // 时间字段取出后的默认时间格式 \'datetime_format\' => \'Y-m-d H:i:s\', // 是否需要进行SQL性能分析 \'sql_explain\' => false, ];