【推荐】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信息,验证码也能正常显示了。
来源:oschina
链接:https://my.oschina.net/u/2400083/blog/484007