最近用自己的電腦做個小東西,需要用到驗證碼,用的是thinkPHP框架,TP的驗證碼需要freetype庫支持,MAC 的OS X自帶APACHE和PHP,直接配置一下就可以使用,很方便,而且擴充支援也較多,挺方便的,但freetype沒有,是個麻煩事,
其實本來也不麻煩,增加一個支援就可以了,如果在linux伺服器環境下,都好辦,或者自行編譯的環境也好辦,但就是因為使用的自備環境,又不想過多的改動系統,因為怕系統內有其他組件需要自帶apache或是PHP支持,改了又會引起其他問題,所以就變得有點麻煩了,網路大都都是一句話,重新編譯PHP,增加freetype支持,但具體就沒說了,這兩天正好閒來無事,折騰了一下,搞定了,
我的思路是與PHP相關的東西,重新下載安裝,這樣不破壞原有環境,同時備份一下/usr/libexec/apache2/libphp5.so這個檔案,並改名成libphp5-OX.so.然後在/etc/apache2/httpd.conf裡面增加一條:
#LoadModule php5_module libexec/apache2/libphp5-OX.so
這樣可以很方便的切換自帶PHP和新編譯的PHP
首先:
下載
下載libgd/releases
libgd-2.1.1.tar.gz
需要png和jpeg,可以透過brew來安裝,還有liftoff和libvpx函式庫
brew install libpng
brew install libjpegyfrewbrewbrew install libpng
brew install libjpegybrewbrewbrew installed (注意看,使用brew安裝的對應函式庫位置,png jpeg等):
./configure --prefix=/usr/local/gd2 --with-zlib --with-png=/usr/local/opt/libpng --with-freetype=/usr/local/opt/freetype --with-jpeg=/usr/local/opt/jpeg/ --with-vpx=/usr/local/opt/libvpx/ --with-tiff= /usr/local/opt/libtiff/
然後從PHP官網上下載一個版本的PHP,可以與系統內的版本不一至,無所謂,
這裡要注意的是,MAC系統有一個系統檔案保護功能(SIP)是會將部分目錄就連ROOT用戶也無法訪問,因為我們只想替換PHP,而並不替換APACHE,所以PHP在編譯生成apache所需要的libphp5.so的時候,是需要將此文件放到/usr /libexec/apache2/目錄下的,而這個目錄是這受保護的,所有需要先把系統保護關掉,關閉步驟如下:
1.重啟MAC,按住command+R鍵,等看到MAC圖示後放開
2.啟動進入Recovery Mode模式後,在選單裡面工具裡找到終端機(Terminal)打開,
3.使用指令:csrutil disable;來關閉,然後reboot重啟即可。
以後如果要再啟用,可以使用csrutil enable;即可。
然後
編譯PHP
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/ --with-apxs2 --enable-sockets --enable -mbstring --with-bz2=shared --with-ic --with-mysql --with-gd=/usr/local/gd2/ --with-pdo-mysql
在這裡又遇到萬惡的依賴關係系統處理,首先是報:
'X11/xpm.h' file not found
按此提示,需要安裝libXpm包,如下:
libXpm-3.5.5.tar.bz2
但安裝此包又會提示:
No package 'x11' found
No package 'xproto' found
再安裝:
libX11-1.5.0.tar.gz
和xproto這個包,
安裝X11的時候又會有一聯串的依賴包,沒辦法,慢慢裝
這裡有個注意項目
因為有太多的包,而這些包又是使用pkg-config來檢查依賴關係的,所以需要安裝pkg-config (這個也可以使用brew來安裝,)
而pkg -config檢查依賴關係是透過環境變數:PKG_CONFIG_PATH來檢查對應套件的pc檔案的,所以我的處理方法是,所有安裝這些套件都放到一個目錄下,然後設定環境變數:
export PKG_C/local/xproto /lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig
接下來提示少哪個包,就去找對應的包,下載tar.gz格式的,
然後解壓,
統一安裝路徑:
./configure —prefix=/usr/local/xproto
小提示:對應的包,大都都可以透過
lists.freedesktop.org
和
ftp://ftp.x.org/pub/X11R7.7 /
這兩個裡面找到
不想費勁找的,我把我安裝過程中下載的包統一打包放上來了,供大家下載,地址如下:
http://download.csdn.net/detail /sdomain/9432886
所有包都安裝完成後,最後是把
libXpm-3.5.5.tar.bz2
這個裝上,
最後編譯PHP,增加xpm擴充。
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/ --with-apxs2 --enable-sockets --enable-mbstring -- with-bz2=shared --with-ic --with-mysql --with-gd=/usr/local/gd2/ --with-pdo-mysql --with-xpm-dir=/usr/local/xproto
configure沒問題,但make時,提示gd.c文件找不到X11/xpm.h這個頭文件,很奇怪,明明我指定了—with-xpm-path=/usr/local/xproto了,而這個路徑下的include/X11/下面就有xpm.h這個文件,
把—with-xpm-path=/usr/local/xproto/include這麼改,configure又通不過,
把gd.c裡面的include路徑改成include/X11/xpm.h也不行,
最後我把/ usr/local/xproto/include下面的X11資料夾拷到PHP原始碼下的ext/gd/資料夾下,編譯沒問題,make install也沒問題,
我估計是path環境變數的問題,如果改$ PATH增加一個/usr/local/xproto/include估計也可以,有興趣的可以試試。
以上就介紹了mac OS X自備PHP環境,沒有freetype的解決方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。