ThinkPHP5验证码不显示的原因及解决方法

时间:2024-02-24 19:03:01

其实很久之前刚学习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,
];

 

函数详解:ob_clean();