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