動態編譯添加php模組,編譯php模組
注意:轉載請註明出處:http://www.programfish.com/blog/?p=85
在很多時候我們用linux裡搭建web伺服器的時候會需要編譯安裝php套件,而在編譯安裝後可能又會需要添加一些編譯安裝時沒有指定要編譯進去的模組,例如如下情況:
mysql.so 或mysqli.so 、mbstring.so zlib.so 等模組。
這裡提示一下:
如果你有安裝過phpmyadmin而且在安裝配置好之後開啟首頁是空白的,那麼很有可能就是你的php沒有mysql和mbstring這兩個模組。
還有就是線上安裝wordpress外掛程式時提示沒有zlib外掛程式也是因為你的php環境裡沒有 zlib.so 這個模組。
以上都是筆者經曆過的,希望可以對解決你的問題有些協助。
好了,現在進入正題,動態編譯並添加php模組:
註明一下,本博文只討論已經安裝了php的linux環境。
如果你不是想動態添加模組而是想重新安裝php環境的請移步:
Linux下Php環境安裝:http://www.cnblogs.com/fly1988happy/archive/2011/12/14/2288096.html
此時你需要儲存有以前編譯安裝php時候用的php源碼。如果沒有,你可以到http://cn2.php.net/downloads.php這裡下載與你已經安裝了的php版本一樣的源碼包(這裡版本最好一樣或者接近,版本不一樣可能會存在不適配)。
還有你需要知道你的php是安裝在哪裡的,因為等下要用到安裝目錄下/bin/phpize 這個工具。
如果你不知道你的php目錄安裝在哪裡,可以find命令來尋找phpize 這個檔案在哪裡。
lfly@linux-oj9e:~> sudo find / -name phpize
這裡我找到我的php就安裝在/php下。
好了,這裡我下載一個php-5.5.18.tar.gz這個源碼包。
下載好了以後用tar -zxvf 解壓。(只針對.tar.gz壓縮包)
lfly@linux-oj9e:~/temp> tar -zxvf php-5.5.18.tar.gz
解壓後得到一個php-5-5-18檔案夾
然後cd 進去那個目錄裡面的ext 目錄:
lfly@linux-oj9e:~/temp> cd php-5.5.18/ext
用ls 命令列出檔案後可以看到很多檔案夾:
這些就是你要編譯的模組的源碼目錄。這裡我假設要編譯的是mysql模組,那們我們就cd 到mysql 這個目錄裡,如果你要編譯其它模組,那麼就cd進對應那個模組。
lfly@linux-oj9e:~/temp/php-5.5.18/ext/mysql> /php/bin/phpize
Cd 進去後我們調用上面提到的那個phpize指令碼。
Phpize指令碼是什嗎?
這裡提及一下:
Phpize可以理解為偵察環境的作用。phpize工具會根據你已經安裝的php的配置情況產生對應的configure檔案。
執行這個命令後可能會提示沒有安裝 autoconf這個程式,如果這樣你就要安裝好這個軟體再來運行這個命令。
我這裡是沒有問題的:
Phpize 運行沒有問題後就用 ./configure –with-php-config=/php/bin/php-config
這裡/php/bin/php-config要換成你的Php安裝目錄。比如是/usr/local/aaa那麼你就搭成/usr/local/aaa/bin/php-config
執行這步後如果沒有報錯就執行make 命令。
如果執行make 命令也沒有報錯,那麼接著執行make install 命令。
我這裡make install 發現報錯,因為普通使用者沒有許可權把編譯好的模組安裝到php的安裝目錄下。
此時可以用sudo執行make install 命令或者直接切換到root使用者下執行,執行時需要輸入你的密碼。
Make install安裝成功後還要幹兩件事:
其一是: 在php.ini的設定檔裡加上一句:
extension=mysql.so
這裡假設是編譯mysql模組,如果是其它就其它模組名.
比如:
如果你不知道你剛編譯的模組是什麼名稱,你可以到php的模組目錄下查看下:
我這裡已經編譯安裝了4個模組。
注意:轉載請註明出處:http://www.programfish.com/blog/?p=85
第二件事就是重啟下你的apache。(如果你安裝的是apache提供web服務的)
http://www.bkjia.com/PHPjc/911074.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/911074.htmlTechArticle動態編譯添加php模組,編譯php模組 注意:轉載請註明出處:http://www.programfish.com/blog/?p=85 在很多時候我們用linux裡搭建web伺服器的時候會需...