天天看點

為PHP添加mcrypt擴充子產品

其中,Mcrypt擴充庫可以實作加密解密功能,就是既能将明文加密,也可以密文還原。PHP加密擴充庫Mcrypt的算法和加密模式

Mcrypt庫支援20多種加密算法和8種加密模式,具體可以通過函數mcrypt_list_algorithms()和mcrypt_list_modes()來顯示,結果如下:

Mcrypt支援的算法有:cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes

Mcrypt支援的加密模式有:cbc cfb ctr ecb ncfb nofb ofb stream

這些算法和模式在應用中要以常量來表示,寫的時候加上字首MCRYPT_和MCRYPT_來表示,如下面Mcrypt應用的例子:

DES算法表示為MCRYPT_DES;

ECB模式表示為MCRYPT_MODE_ECB;

基本原理是:首先使mcrypt軟體能夠運作,然後安裝php擴充子產品,并在php.ini配置。

這裡注意的是mcrypt軟體依賴libmcrypt和mhash兩個庫,是以安裝配置順序從右至左

一,下載下傳安裝mcrypt

   Libmcrypt(libmcrypt-2.5.8.tar.gz ):

   mcrypt(mcrypt-2.6.8.tar.gz ):

   mhash(mhash-0.9.9.9.tar.gz ):

2 .先安裝Libmcrypt

#tar -zxvf libmcrypt-2.5.8.tar.gz

   #cd libmcrypt-2.5.8

   #./configure

   #make

   #make install 說明:libmcript預設安裝在/usr/local

3.安裝mhash

   #tar -zxvf mhash-0.9.9.9.tar.gz

   #cd mhash-0.9.9.9

   #make install

4.安裝mcrypt

   #tar -zxvf mcrypt-2.6.8.tar.gz

   #cd mcrypt-2.6.8

   #LD_LIBRARY_PATH=/usr/local/lib ./configure

   說明:由于在配置Mcrypt時,會找不到libmcrypt的連結庫,導緻無法編譯,因為Libmcrypt的連結庫在/usr/local/檔案夾下。因些在配置mcrypt時要加入LD_LIBRARY_PATH=/usr/local導入鍵接庫

二, 安裝PHP擴充子產品

1. 靜态編譯

在任意PHP檔案中加入函數 phpinfo(),即可取得目前PHP的配置

在這些配置後面新增需要加入的配置:’–with-mcrypt=/usr/local/include’

然後進入php源代碼目錄,執行這條完整的configure指令

配置完成,下面進行源碼包的制作和安裝

make clean (一定需要)

make

make install

2. 動态加載

使用php的常見問題是:編譯php時忘記添加某擴充,後來想添加擴充,但是因為安裝php後又裝了一些東西如PEAR等,不想删除目錄重裝,于是可以采用phpize。方法是:

要有與現有php完全相同的php壓縮包 。我用的是php-5.2.6.tar.gz。展開後進入裡面的ext/mcrypt目錄 (裡面是mcrypt的php擴充),然後執行/usr/local/php/bin/phpize。phpize是安裝php時安裝好的一個工具,如果你的機器沒有安裝phpize工具,那麼可能還是要make,make install php,僅僅為了得到phpize.

執行完後,會發現目前目錄下多了一些configure檔案,如果沒報錯,則根據提示運作

   ./configure --with-php-config=/usr/local/php/bin/php-config

    注意要先確定/usr/local/php/bin/php-config存在。

    make

    make install

Php代碼

./configure --with-php-config=/usr/local/php/bin/php-config

make install 之後系統會提示你mcrypt.so檔案所在的目錄。根據php.ini中訓示的extension_dir指向的目錄中,将其複制過去。修改php.ini,在最後添加一句extension=mcrypt.so

最後重新開機APACHE服務,萬事OK。

本文轉自 houzaicunsky 51CTO部落格,原文連結:http://blog.51cto.com/hzcsky/481402