惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
爱范儿
爱范儿
V
Visual Studio Blog
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
博客园 - Franky
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
罗磊的独立博客
L
LangChain Blog
Jina AI
Jina AI
IT之家
IT之家
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页

博客园 - 赵瑛

如何把一个js的代码变成一个.min.js的文件 thinkphp8有一个木马文件链接 thinkphp 可以居中的分页css样式 php将内容转为word vue点击复制 vue简单分页 vue无限加载 mpdf增加字体并进行使用 jquery导出word css清除浮动最好的方法 Elasticsearch同时实现and与or查询 Elasticsearch查询指定字段是否有重复数据 查询并删除Elasticsearch库中指定字段重复的数据 elasticsearch进行and,or多条件组合查询 elasticsearch中的and和or php FTP操作类( 拷贝、移动、删除文件/创建目录 ) mysql重置自增id js 双指放大、拖动图片 php操作elasticsearch数据库的方法
thinkphp8无法显示验证码的原因之一
赵瑛 · 2025-07-29 · via 博客园 - 赵瑛

安装了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;

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