當PHP是自己編譯php於Linux上後,之後如果我們必須用到某個extensions時,則必須自己手動去編譯它,例如像是 , 之類的 extensions, 本篇在介紹如何手動編譯自己所需的extensions檔案
準備:
1. 當從官網抓下所需的php壓縮檔後並解開,裡面會有個ext的資料夾,裡面有很多目錄代表不同的extensions
2. 修改 /etc/php.ini , 讓php去載入我需要的extensions
# vi /etc/php.ini
extension_dir = “/usr/lib/php/extensions" <–說明我存放的extensions位置
[extension section]
extension= <–我要載入的 extensions
檢查:
可以執行 /srv/www/cgi-bin/php -v 來看看 extensions 載入是否有錯 ,
如果有下面這錯誤訊息, 表示/usr/lib/php/extension/ 裡沒有該 的 extensions 檔
PHP Warning: Unknown(): Unable to load dynamic library ‘/usr/lib/php/extensions/’ – /usr/lib/php/extensions/: cannot open shared object file: No such file or directory in Unknown on line 0
方法:
注意: /srv/www/cgi-bin/php <–這是我放php的位置
/usr/lib/php/extension <–這是我放extensions的位置
[以下先以編譯 這extensions 檔為例]
1. 先到 這個資料夾裡
# cd /php/ext/mbstring/
2.依照下面的指令順序去編譯
# /srv/www/cgi-bin/phpize
# ./configure –with-php-config=/srv/www/cgi-bin/php-config
# make
# make install
3.編譯完後系統會告知你編譯完後的檔案在哪裡,只要cp到你指定的extensions的資料夾裡即可
Installing shared extensions: /usr/share/extensions/no-debug-non-zts-20020429/
# cp /usr/share/extensions/no-debug-non-zts-20020429/ /usr/lib/php/extension
發生錯誤:
如果在 ./configure 時就出現錯誤訊息時 , 以下以 為例
1. If configure fails try –with-jpeg-dir=<DIR> <-表示在編譯時需要jpeg這個目錄路徑
# –with-jpeg-dir=/srv/www/php/extensions/
2. configure: error: libpng.(a|so) not found. <-表示需要libpng這個套件
# 利用yast2 去搜尋libpng-devel並安裝起來
3. configure: error: PNG support requires ZLIB. Use –with-zlib-dir=<DIR> <-表示在編譯時需要zlib這個目錄路徑
# 必須先編譯出 然後再編譯
# –with-zlib-dir= /usr/lib/php/extensions/
4. configure: error: libjpeg.(a|so) not found. <–表示需要libjpeg這個套件
# 利用yast2 去搜尋libjpeg-devel並安裝起來
所以整個 ./comfigure 的參數如下
# ./configure –with-php-config=/srv/www/cgi-bin/php-config –with-jpeg-dir=/usr/lib/php/extensions/ –with-zlib-dir=/usr/lib/php/extensions/
以上編譯所出現的問題,在編譯其它的extensions有可能會出現,則可以參考一下
















