LINUX下PHP編譯添加相應的動態擴展模塊so(不須要從新編譯PHP,以openssl.so爲例)

網上我看到有不少相關的文章都是簡述這個問題的,但畢竟由於LINUX版本衆多,不少LIUNX命令或路徑都有所差異,有時一樣的命令卻不能執行同樣的操做。php

這篇文章是我在實際運用當中配置成功的實例,但願對你們有所幫助,開源是來自每一個人的無私幫助,每一個人的成長都是須要別人的扶植!廢話就說到這了!apache

http://php.net/downloads.php  (相應PHP版本下載)服務器

一、首先肯定LINUX下已安裝的PHP版本,由於不一樣PHP版本對於追加動態模塊有兼容性問題(可能路徑,配置?其餘?),每每報錯不能安裝,追加的模塊必須版本一致網絡

查看PHP版本有多種方法:編輯器

①運行php -v(但在個人64位LIUNX測試過沒做用,緣由你知道的了!)測試

②在已安裝好的PHP路徑下找到php-config並進行查看,能夠vi或cat (關鍵字:version="XXXXXXX"爲PHP版本號)spa

vi 或cat php-config.net

二、下載好的PHP源代碼包需人工上傳到FTP網絡服務器上,這時你的tar包可能只是放在WWW下,爲了你本身方便查找和使用,建議創建本身的source文件夾進行存放。日誌

創建文件夾:mkdir XXXXXX(文件夾名)orm

移動或複製文件:mvcp php.tar /sourece(注意路徑,」/「我是在根目錄下建立的臨時文件夾!)

解壓tar包:tar zxfv php.tar(源代碼tar包)

三、如今進入正題了,以追加動態模塊openssl.so爲例,進入PHP源碼文件夾後,執行phpize生成configure進行模塊追加:

#cd /source/php/ext/openssl    進入源碼包的OPENSSL模塊文件夾

#/var/www/php/bin/phpize     注意這個是已安裝好的PHP路徑(有些是版本多是在/usr/local/******下,每一個人的安裝習慣不一樣)

如出現如下錯誤:Cannot find config.m4. *****************************************

解決方法:

查看源碼包OPENSSL文件夾下是否有config0.m4,若是有可執行,
#mv config0.m4 config.m4

四、進入最後的編譯階段了,我編譯時是比較順利的(有時ERROR若是出現,我也很差作闡述,只能靠本身查看errorlog日誌了)

#./configure --with-openssl --with-php-config=/var/www/php/bin/php-config(注意:這個參數後的是你本機已安裝好的PHP路徑)
#make

#make test (測試編譯結果)

#make install

當成功時會返回成功信息(注意查看,SO文件的所在位置): 

  Installing shared extensions:     /usr/lib/20060613/(這路徑是我虛擬的,正確請本身查找,會生成openssl.so文件)

通常規範點的話,會把追加的SO模塊放在一個指定的文件夾裏,就在PHP安裝好的目錄下的extensions文件夾內

#mv /*****/*****/openssl.so /var/www/php/lib/php/extensions

動態模塊追加編譯已所有完成了。。。。

最後就是要PHP支持加載這些追加的動態模塊了,vi編輯PHP下的配置文件php.ini。

#vi /*******/*******/php.ini

進入編輯器後能夠看到PHP的全部相關配置,查找extension_dir這個配置的選項,

vi後可直接‘/extension_dir '查找,找到後多是這樣的:

extension_dir  = "./"

需修改爲: 

extension_dir  = "/var/www/php/lib/php/extensions/"   (注意是so文件的所在)

extension=openssl.so   (so模塊文件名)
最後保存退出! :wq!

接着就是重啓 apache服務器了!(有說人不用,但也就一個命令,我以爲配置好重啓仍是安心點!)

能夠用命令查看下PHP的運行加載:    /var/www/php/bin/php -m|grep openssl   (路徑啥的我就不說了,就是安裝好的PHP路徑就是了)

出現的信息可能會出現一些錯誤,但都是不要緊的:相似找不到什麼DLL文件啊(openssl.dll之類的),別管他,DLL是WINDOWS主機服務器模塊加載的類型,UNIX和LINUX是以SO爲模塊加載名的!

相關文章
相關標籤/搜索