1. 程式人生 > >PHP擴充套件載入方法--我在新增mcrypt擴充套件時遇到的問題

PHP擴充套件載入方法--我在新增mcrypt擴充套件時遇到的問題

一、PHP擴充套件庫動態編譯方法

通常PHP擴充套件庫是可以動態編譯載入的。首先要下載和你的php版本一樣的原始碼包,例如要載入socket擴充套件:

#cd /home/php-5.4.26/ext/sockets //這裡是php的原始碼包
#/usr/local/php/bin/phpize //phpize的路徑
#./configure  --with-php-config=/usr/local/php/bin/php-config  --enable-socket //注意php-config的位置可能和你安裝的有所不同
#make
#make install

然後在php.ini檔案啟用該擴充套件,重啟伺服器程序即可。

二、mcrypt的擴充套件安裝(此方法安裝完無效)

mcrypt需要三個包:libmcrypt, mhash, mcrypt.

下載原始碼,按以上順序編譯安裝這三個包。然後用上面PHP擴充套件庫編譯方法編譯安裝mcrypt:

#cd /home/php-5.4.26/ext/mcrypt
#/usr/local/php/bin/phpize
#./configure  --with-php-config=/usr/local/php/bin/php-config  --enable-mcrypt
#make
#make install

如上安裝完成之後,在php.ini檔案啟用擴充套件,然後重啟php-fpm程序。

使用

檢視已安裝的PHP擴充套件,發現已經載入了mcrypt,但是使用phpinfo()看不到該擴充套件。

三、重新編譯PHP安裝mcrypt

在方法二中動態編譯載入無效之後,我選擇了重新編譯PHP。

首先使用

<pre name="code" class="cpp">#/usr/local/php/lib/php -i | grep config

檢視現有PHP的編譯命令,然後進入PHP原始碼包,重新編譯安裝PHP,增加擴充套件 --with-mcrypt :

#./configure'  '--prefix=/usr/local/php' '--with-xpm-dir=/usr/lib64' '--with-gd=/usr/local/gd' '--with-jpeg-dir=/usr/local/jpeg' '--with-png-dir=/usr/local/png' '--with-freetype-dir=/usr/local/freetype' '--with-mysql=/usr/local/mysql' '--enable-fastcgi' '--enable-fpm' '--with-mcrypt'
此時在檢視PHP已載入的動態庫,發現已經載入了mcrypt,但是有一個報錯,提示mcrypt擴充套件已經載入,這是因為方法二里面我在php.ini裡面啟用了mcrypt的擴充套件,重新註釋掉即可。

至此使用phpinfo()檢視,已經可以顯示mcrypt擴充套件如下:




遺留問題:

1、不知道為何動態載入mcrypt沒有載入成功,其背後的原理是什麼?

2、PHP載入擴充套件都有哪幾種方法?

四.常見問題

1、編譯安裝intl擴充套件,執行

#./configure

出現如下錯誤:

configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.

解決方法:

安裝libicu-devel,然後重新編譯即可.