thinkphp8无法显示验证码的原因之一

安装了thinkphp8后,在使用验证码时,死活不显示,字体换了几个,路径也正确,就是不显示。

最后,终于发现一个问题,那就是获取的路径的编码有问题,通过转码后,最终验证码显示出来了

给有同样问题的友友们一个经验,碰到不显示的,也可以用我的方法试试

 

$fontttf = $_SERVER['DOCUMENT_ROOT'].'/static/fonts/zkcryyt.ttf';
// 转为 GBK(Windows)
$fontGbk = iconv('UTF-8', 'GBK//IGNORE', $fontttf);
if (@file_exists($fontGbk) && @is_readable($fontGbk)) {
     $fontttf = $fontGbk;
} else {
     $fontttf = realpath($fontttf);
     if (!$fontttf) {
         $fontttf = $fontttf;
     }
}

 将上面的添加到\vendor\topthink\think-captcha\src\Captcha.php中的215行,并注释掉下面的代码

        // 验证码使用随机字体
//        $ttfPath = __DIR__ . '/../assets/' . ($this->useZh ? 'zhttfs' : 'ttfs') . '/';
//
//        if (empty($this->fontttf)) {
//            $dir  = dir($ttfPath);
//            $ttfs = [];
//            while (false !== ($file = $dir->read())) {
//                if (substr($file, -4) === '.ttf' || substr($file, -4) === '.otf') {
//                    $ttfs[] = $file;
//                }
//            }
//            $dir->close();
//            $this->fontttf = $ttfs[array_rand($ttfs)];
//        }
//
//        $fontttf = $ttfPath . $this->fontttf;

 最后要注意一下你字体的路径即可。

 

posted @ 2025-07-29 14:34  赵瑛  阅读(38)  评论(0)    收藏  举报

版权所有 © 2025 沅来是澧

如果有程序开发、网站建设等需求的请联系我,QQ:47419233