Call to undefined function imagettftext()

本文介绍了解决GD库中验证码无法正常显示的问题过程。通过排查发现是由于缺少freetype和jpeg支持导致,安装相应软件并配置后,成功使验证码在本地环境中正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天将公司官网弄到本地测试到时候,发现验证码无法显示,公司的官网以前是用dede做的,找到dede中的include/vdimgck.php,单独运行,没有报错,也不显示

顺着文件一步步查找 发现以下代码

//输出文字
    $lastc = '';
    for($i=0;$i<$rndcodelen;$i++)
    {
        $bc = mt_rand(0, 1);
        $rndstring[$i] = strtoupper($rndstring[$i]);
        $c_fontColor = $fontColor[mt_rand(0,4)];
        $y_pos = $i==0 ? 4 : $i*($font_size+2);
        $c = mt_rand(0, 15);
        @ imagettftext($im, $font_size, $c, $y_pos, 19, $c_fontColor, $font_file, $rndstring[$i]);
        $lastc = $rndstring[$i];
    }

原来这里有个@符合 把@符合去掉,再次运行,程序报了Call to undefined function imagettftext()的错误,原来时gd库出现了问题

通过phpInfo()查看 gd库已经开启,但是里边没有freeType 和jpeg的支持 但有png的支持

估计是 freetype 跟 jpeg没有安装

于是安装这两软件

yum install freetype*

yum install libjpeg*


安装完后 找一下库装到哪里去了

find / -name freetype

结果在 /usr/include/freetype2/  文件夹中

同理  libjpeg 在 /usr/include  中

然后进入php源代码的   php源代码(下载的代码)/ext/gd文件夹中 利用phpize进行拓展安装

(我的php安装在/usr/local/php中)

  /usr/local/php/bin/phpize

 ./configure --with-freetype-dir=/usr/include/freetype2  --with-jpeg-dir=/usr/include   --with-php-config=/usr/local/php/bin/php-config

然后

make

make install

到此 完成了php中GD库到重新编译

重启apache服务 问题圆满解决


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值