我是靠谱客的博主 无聊河马,最近开发中收集的这篇文章主要介绍linux提示Warning: imagettftext(): Could not find/open font错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在php中imagettftext — 用 TrueType 字体向图像写入文本了,在其它版本中没有问题唯独在linux中使用imagettftext时出现imagettftext(): Could not find/open font错误了,具体我们来看解决办法。

(PHP 4, PHP 5, PHP 7)

imagettftext — 用 TrueType 字体向图像写入文本

说明

array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )

使用 TrueType 字体将 指定的 text 写入图像。

很多情况下字体都放在脚本的同一个目录下。下面的小技巧可以减轻包含的问题。

<?php
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'SomeFont';
?>


最近一个项目在Ubuntn的apache服务器中验证码显示不出来,在CentOS的apache服务器中显示是正常的。以为是PHP配置的问题,但是GD库的开启的,相关服务也都正常,把显示验证码的方法单独拿出来测试,发现报错

Warning: imagettftext(): Could not find/open font

截取部分相关代码:

class Checkcode {
    //设置字体的地址
    private $font;
 
    function __construct() {
        $rand = rand(0, 1);
        if ($rand == 0) {
            $this->font = 'elephant.ttf';
        } else {
            $this->font = 'Vineta.ttf';
        }
    }
 
    /**
     * 生成文字
     */
    private function creat_font() {
        $x = $this->width / $this->code_len;
        for ($i = 0; $i < $this->code_len; $i++) {
            imagettftext($this->img, $this->font_size, rand(-30, 30), $x * $i + rand(0, 5), $this->height / 1.4, $this->font_color, $this->font, $this->code[$i]);
            if ($i == 0)
                $this->x_start = $x * $i + 5;
        }
    }
}

是imagettftext()这个函数报错了,找不到/打不开字体。应该是__construct()函数里指定字体文件出错了。

if ($rand == 0) {
            $this->font = 'elephant.ttf';
        } else {
            $this->font = 'Vineta.ttf';
 }

解决方法:

虽然上面代码指明的是字体文件在当前目录下,但是Ubuntn的apache服务器中还是要给字体文件指定明确的路径

$this->font = './elephant.ttf';    //相对路径
//或者
$this->font = '/var/www/html/project/elephant.ttf';    //绝对路径

这样验证码就可以正常显示了

从上面的函数用法来看就是打不开字体了,也就是一个非常简单路径问题了。

最后

以上就是无聊河马为你收集整理的linux提示Warning: imagettftext(): Could not find/open font错误的全部内容,希望文章能够帮你解决linux提示Warning: imagettftext(): Could not find/open font错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部