linux環境驗證碼不顯示,除了GD和BOM問題,還可能是Freetype問題

發表於2019-05-11
常見的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 你的原始碼目錄/ext/gd   #進入gd原始碼目錄
你的目錄/phpize      #可能需要你phpize生成configure檔案,如果已存在,則跳過
./configure --prefix=/usr/local/gd --with-freetype-dir=/usr/local/freetype

#configure這一步可能會報錯不能include freetype.h 檔案,原因是configure裡對標頭檔案指定路徑不對,需要你去freetype的安裝路徑下做個軟連線。
#cd /usr/local/freetype/include/freetype2
#sudo mkdir freetype
#cd freetype
#ln -s ../freetype.h freetype.h
#ok,我們繼續下去

make && make install
最後把生成的gd.so檔案根據你的php.ini中的配置路徑就行了

最後檢視一下phpinfo,已經出現freetype資訊,驗證碼也能正常顯示了。

尼瑪,這個帖子發不出來,包含敏感詞彙,那給個提示哪裡敏感唄,還得一個個來排查
好吧,我想問,為啥帖子裡中文單詞chuli要算作敏感詞啊,坑爹是不
回覆
為什麼自己釋出的帖子,個人中心裡卻找不到呢,還得手動找
評論
寫的真好
評論
在驗證碼方法中新增 ob_end_clean(); 
一萬起-彙集天貓淘寶月銷上萬的商品
評論
遇到和題主一樣的問題,按照題主的方法不成功。。
評論
ob_end_clean();我試了   驗證碼正確顯示   太感謝了
評論

相關文章