解决Onethink验证码不显示问题

为君一笑 提交于 2020-01-08 21:45:21

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

常见的GD未安装及BOM问题办法就不细说了,度娘上答案较多。
可是我遇到的验证码不显示不是这类原因导致的,反复检查最后才确定了是FreeType字体引擎未安装的原因。

首先,打开TP调试模式,右键打开验证码错误图标,会发现标志性的报错,

call to undefined function Think/imagettftext

单独php探针一下,环境中的确不存在这个函数。查php手册,发现该函数需要GD和freetype支持,GD我是确认安装的,freetype没有安装,起先一度以为unbuntu下apt-get搜索到并安装一个libfreetype6-dev包就行了,可是问题依然存在,于是一段时间内竟然忽略了这个真正的原因。

最后才明确到问题的确是在freetype 上,只是我的安装freetype的方法不对。
大家如果排除了GD和bom问题,验证码依然不存在,就可以在phpinfo查看GD节区,看看是否有三行Freetype的描述(广义来说,其实这也算GD支持不完整的问题),如果没有,就应该是没有安装freetype了

解决方法如下:
先去Freetype官网http://www.freetype.org/下载源码

tar -jxvf freetpe.tar.gz
cd freetype./configure --prefix=/usr/local/freetype --enable-shared
make && make install



Ok, freetype安装好后,我们重新编译GD, 把freetype编译进GD拓展

cd php源码目录/ext/gd
phpize  #生成configure文件
./configure --prefix=/usr/local/gd --with-freetype-dir=freetype源码目录  #这步可能会报错不能include freetype.h 文件,
                                                                       #原因是configure脚本里某个头文件路径不对,需要你去freetype源码目录下做个软连接。
cd freetype源码目录/include/freetype2
mkdir freetype
cd freetype
ln -s ../freetype.h freetype.h

make && make install

最后把生成的gd.so文件移动到你的php.ini中配置的拓展路径就行了

最后查看一下phpinfo,已经出现freetype信息,验证码也能正常显示了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!