解决Onethink验证码不显示问题

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

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

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信息,验证码也能正常显示了。
spa

相关文章
相关标签/搜索