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;
最后要注意一下你字体的路径即可。

浙公网安备 33010602011771号