常见的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