最新消息:文章中包含代码时,请遵守代码高亮规范!

Ubuntn apache服务器中Warning: imagettftext(): Could not find/open font【原创】

Apache Sun 5368浏览 0评论

最近一个项目在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';    //绝对路径

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

转载时请注明出处及相应链接,本文永久地址:http://blog.it985.com/12356.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Sun的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!