lnmp之安裝PHP模塊/擴(kuò)展(不需要重裝PHP)
VPS偵探一直在努力的去營(yíng)造一個(gè)VPS相關(guān)話題的交流環(huán)境,于是有了很多的VPS相關(guān)的教程、QQ群、有了論壇、有了LNMP一鍵安裝包...,在此說(shuō)明一下Linux下PHP模塊/擴(kuò)展都是采用此方法安裝或安裝php直接編譯進(jìn)去,PHP的dll模塊/擴(kuò)展文件是Windows下php模塊的使用方法,兩者是無(wú)法通用的!!
VPS偵探主要根據(jù)論壇上lnmp版塊用戶反映來(lái)寫一些教程,今天說(shuō)一下如何為lnmp的php安裝一些自己需要的模塊,下面主要有兩種方式進(jìn)行安裝:源碼編譯方式安裝和pecl方式進(jìn)行安裝。
源碼編譯安裝
安裝前
安裝前建議先執(zhí)行 /usr/local/php/bin/php -m (此命令顯示目前已經(jīng)安裝好的PHP模塊)看一下,要安裝的模塊是否已安裝。然后下載當(dāng)前PHP版本的源碼并解壓。
大部分php擴(kuò)展/模塊的源碼編譯安裝就是三個(gè)步驟,在源碼目錄下執(zhí)行:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
有些模塊可能會(huì)稍微有差異(如要求添加一些參數(shù)),但是 --with-php-config=/usr/local/php/bin/php-config 是所有PHP模塊最基本的參數(shù)這個(gè)是必須要有的,具體看模塊的安裝文檔就可以。
本文以imap和exif模塊為例,進(jìn)入php源碼目錄下ext,里面會(huì)有大部分模塊的源碼,這里都是php自帶模塊,第三方模塊的話需要自己找第三方模塊的源碼。
一、安裝imap模塊
1、安裝imap模塊前需要先安裝imap所需的庫(kù):
CentOS :yum install libc-client-devel
Debian:apt-get install libc-client-dev
2、首先進(jìn)入php安裝目錄的ext目錄
比如php的源碼目錄為:/root/lnmp1.3-full/src/php-5.4.45/
則執(zhí)行:cd /root/lnmp1.3-full/src/php-5.4.45/ext/? ###一般安裝完LNMP php源碼都是自動(dòng)刪除了的,需要自己進(jìn)入src目錄下解壓對(duì)應(yīng)版本的php源碼包。###
我們要安裝imap模塊,執(zhí)行cd imap/
再執(zhí)行 /usr/local/php/bin/phpize 會(huì)返回如下信息:
Configuring for:
PHP Api Version:???????? 20041225
Zend Module Api No:????? 20060613
Zend Extension Api No:?? 220060519
再執(zhí)行以下命令:
[root@vpser imap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-kerberos --with-imap-ssl [root@vpser imap]# make && make install執(zhí)行完返回:
Build complete.
Don't forget to run 'make test'.
Installing shared extensions:???? /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
表示已經(jīng)成功,再修改/usr/local/php/etc/php.ini
查找:extension_dir 再下面一行添加上extension = "imap.so"
保存,執(zhí)行/etc/init.d/php-fpm restart 重啟。
在瀏覽器里面輸入http://ip/p.php,打開探針,安裝IMAP模塊前:
安裝IMAP模塊后:
二、安裝exif模塊
安裝exif不需要另外安裝庫(kù),所以省略掉了安裝庫(kù)的步驟。
比如php的源碼目錄為:/root/lnmp1.3-full/src/php-5.4.45/
則執(zhí)行:cd /root/lnmp1.3-full/src/php-5.4.45/ext/
我們要安裝exif模塊,執(zhí)行cd exif/
再執(zhí)行 /usr/local/php/bin/phpize 會(huì)返回如下信息:
Configuring for:
PHP Api Version:???????? 20041225
Zend Module Api No:????? 20060613
Zend Extension Api No:?? 220060519
再執(zhí)行以下命令:
[root@vpser imap]# ./configure --with-php-config=/usr/local/php/bin/php-config [root@vpser imap]# make && make install執(zhí)行完返回:
Build complete.
Don't forget to run 'make test'.
Installing shared extensions:???? /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
表示已經(jīng)成功,再修改/usr/local/php/etc/php.ini
查找:extension = 再最后一個(gè)extension= 后面添加上extension = "exif.so"
保存,執(zhí)行/etc/init.d/php-fpm restart 重啟。
在/home/wwwroot/下面創(chuàng)建一個(gè)exif.php的文件,內(nèi)容如下:
<?php
$exif = read_exif_data ('IMG_0001.JPG');
while(list($k,$v)=each($exif)) {
echo "$k: $v<br>\n";
}?>
其中IMG_0001.JPG為照片文件。
未安裝exif模塊前:
安裝exif模塊后:
可以讀出照片的exif信息。
安裝其他模塊也基本上都是這兩種方式,當(dāng)./configure --with-php-config=/usr/local/php/bin/php-config 執(zhí)行這個(gè)的時(shí)候是會(huì)檢查系統(tǒng)上庫(kù)是否安裝上,如果沒有安裝上就會(huì)報(bào)錯(cuò),按錯(cuò)誤提示安裝相關(guān)的庫(kù)就行。
pecl方式安裝
pecl方式安裝是使用pecl install xxx 命令的方式,xxx為php模塊名字,但是該php模塊必須是 https://pecl.php.net 上面的且必須要提前按要求安裝好依賴包,不同php模塊可能不需要也可以需要安裝,具體可以官網(wǎng)手冊(cè) https://www.php.net/manual/en/index.php 中查詢。
lnmp默認(rèn)禁用掉了部分php函數(shù),需要將exec、popen、readlink這些函數(shù)從禁用函數(shù)中去掉,可以在/usr/local/php/etc/php.ini 中查找disable_function 就可以在后面看到是否有禁用函數(shù)。
安裝好依賴包就可以直接,pecl install xxx 進(jìn)行安裝php模塊。
如果還有其他問(wèn)題,可以到https://bbs.vpser.net提問(wèn),記得提問(wèn)前在https://bbs.vpser.net/search.php搜索一下哦。
>>轉(zhuǎn)載請(qǐng)注明出處:VPS偵探 本文鏈接地址:http://www.0794baidu.com/manage/lnmp-php-install-ext.html














軍哥,可不可以出一個(gè)安裝php sendmail的教程?謝謝
@羅, 只要沒手動(dòng)操作進(jìn)行升級(jí)級(jí)肯定不會(huì)自己就變,只要是變了肯定是升降級(jí)過(guò)或者通過(guò)其他方式安裝了新的php
裝環(huán)境php版本7.1.7 然后使用一段時(shí)間發(fā)現(xiàn)版本變成了5.X 之后我手動(dòng)升級(jí)到了7.1.7 為什么會(huì)版本會(huì)變化
@劉liu6, find / -name libc-client.a 看一下
執(zhí)行:yum install libc-client-devel時(shí)候報(bào)如下信息。說(shuō)是已經(jīng)安裝了這個(gè)依賴了
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Package libc-client-2007f-16.el7.x86_64 already installed and latest version
Package uw-imap-devel-2007f-16.el7.x86_64 already installed and latest version
Nothing to do
然后執(zhí)行完./configure --with-php-config=/usr/local/php/bin/php-config 進(jìn)行make && make install 時(shí)候報(bào)
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
請(qǐng)問(wèn) 我這個(gè)依賴已經(jīng)安裝了 為啥還報(bào)這個(gè)錯(cuò)呢?該怎樣解決呢?謝謝
@Clin, 自己解壓php源碼包,ext目錄下,文章有說(shuō)明
如果安裝EXIF呢 我根本沒有找到這個(gè)文件夾
@centos_, 那是直接buildin的升級(jí)php就一起升級(jí)了
@奔跑, 這個(gè)是跟隨系統(tǒng)的
大神,對(duì)于lnmp安裝時(shí)候直接編譯進(jìn)去的擴(kuò)展模塊,怎么單獨(dú)升級(jí)?