php在linux下call to undefined function imagettftext()

p_w_picpathttftext和p_w_picpathfttext兩個函數在生成驗證碼或須要向圖片寫入文字時候經常使用,在linux環境下只開啓gd庫是不夠的。php

這兩個函數均須要 FreeType 庫支持,在函數文檔中也能夠找到html

wKiom1nMgKjhhqD8AAAOcQtCxo0226.png

因此當發現調用時報錯提示函數不存在,都是由於編譯時沒有指定freetype庫激活形成的。若是須要則必需從新編譯gd庫並激活freetype支持。linux


freetype庫是三方庫,須要單獨安裝,若是系統中已經安裝則無需安裝bash

查看命令:ide

rpm -ip freetype

函數

whereis freetype

下載地址: https://www.freetype.org/download.html
ui

最好使用.net域名下的,.org很容易形成超時。spa

這裏以:.net

https://sourceforge.net/projects/freetype/files/freetype2/2.7.1/freetype-2.7.1.tar.gz/download
unix

爲例:

tar -zxf freetype-2.7.1.tar.gz
cd freetype-2.7.1/builds/unix
./configure --prefix=/usr/local/freetype/2.7.1 --without-harfbuzz
make
make install

說明:若是不進入builds/unix目錄下編譯會提示:make: Nothing to be done for `unix'. 固然也沒有什麼影響。

安裝freetype須要包:

 external
 bzip2
 libpng
 harfbuzz
能夠使用yum安裝,但harfbuzz在yum中沒有因此須要編譯安裝,而編譯時又須要freetype包,因此能夠不安裝這個包,而後在freetype編譯時增長--without-harfbuzz便可。


安裝好freetype後便可編譯gd庫,官方文檔中也有說明:

wKioL1nMf-vwXBb8AADqJkh4X4g573.png

因此編譯gd庫須要增長--with-freetype-dir=/usr/local/freetype/2.7.1/ --enable-gd-native-ttf

注意:若是freetype時默認安裝無需指定目錄。


編譯前必定要記得 make clean 清除上次的編譯內容,尤爲是已經編譯安裝過的。

./configure 配置後能夠查看  Configuring extensions 下面是否有相關成功記錄:

wKiom1nMhtXRSuZ2AAAqS5jbvwU236.png


而後

make
make install

編譯好後則能夠查看phpinfo()

wKioL1nMhwuD6wXbAABMYou8D8U455.png

出現這個即安裝成功,能夠使用這兩個函數。

相關文章
相關標籤/搜索