lnmp之安裝PHP模塊/擴(kuò)展(不需要重裝PHP)
VPS偵探一直在努力的去營造一個VPS相關(guān)話題的交流環(huán)境,于是有了很多的VPS相關(guān)的教程、QQ群、有了論壇、有了LNMP一鍵安裝包...,在此說明一下Linux下PHP模塊/擴(kuò)展都是采用此方法安裝或安裝php直接編譯進(jìn)去,PHP的dll模塊/擴(kuò)展文件是Windows下php模塊的使用方法,兩者是無法通用的!!
VPS偵探主要根據(jù)論壇上lnmp版塊用戶反映來寫一些教程,今天說一下如何為lnmp的php安裝一些自己需要的模塊,下面主要有兩種方式進(jìn)行安裝:源碼編譯方式安裝和pecl方式進(jìn)行安裝。
源碼編譯安裝
安裝前
安裝前建議先執(zhí)行 /usr/local/php/bin/php -m (此命令顯示目前已經(jīng)安裝好的PHP模塊)看一下,要安裝的模塊是否已安裝。然后下載當(dāng)前PHP版本的源碼并解壓。
大部分php擴(kuò)展/模塊的源碼編譯安裝就是三個步驟,在源碼目錄下執(zhí)行:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
有些模塊可能會稍微有差異(如要求添加一些參數(shù)),但是 --with-php-config=/usr/local/php/bin/php-config 是所有PHP模塊最基本的參數(shù)這個是必須要有的,具體看模塊的安裝文檔就可以。
本文以imap和exif模塊為例,進(jìn)入php源碼目錄下ext,里面會有大部分模塊的源碼,這里都是php自帶模塊,第三方模塊的話需要自己找第三方模塊的源碼。
一、安裝imap模塊
1、安裝imap模塊前需要先安裝imap所需的庫:
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源碼都是自動刪除了的,需要自己進(jìn)入src目錄下解壓對應(yīng)版本的php源碼包。###
我們要安裝imap模塊,執(zhí)行cd imap/
再執(zhí)行 /usr/local/php/bin/phpize 會返回如下信息:
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不需要另外安裝庫,所以省略掉了安裝庫的步驟。
比如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 會返回如下信息:
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 = 再最后一個extension= 后面添加上extension = "exif.so"
保存,執(zhí)行/etc/init.d/php-fpm restart 重啟。
在/home/wwwroot/下面創(chuàng)建一個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í)行這個的時候是會檢查系統(tǒng)上庫是否安裝上,如果沒有安裝上就會報錯,按錯誤提示安裝相關(guān)的庫就行。
pecl方式安裝
pecl方式安裝是使用pecl install xxx 命令的方式,xxx為php模塊名字,但是該php模塊必須是 https://pecl.php.net 上面的且必須要提前按要求安裝好依賴包,不同php模塊可能不需要也可以需要安裝,具體可以官網(wǎng)手冊 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模塊。
如果還有其他問題,可以到https://bbs.vpser.net提問,記得提問前在https://bbs.vpser.net/search.php搜索一下哦。
>>轉(zhuǎn)載請注明出處:VPS偵探 本文鏈接地址:http://www.0794baidu.com/manage/lnmp-php-install-ext.html














安裝Lamp的時候openssl已經(jīng)被安裝了,不過版本是1.0.1e, 如果要單獨(dú)升級這個openssl到1.0.2e 該怎么做啊,跪求了!
@zhanhanjie, php源碼目錄,lnmp1.3-full/src/php-版本號/ext/
/root/lnmp1.3-full 下面沒有ext/目錄 弄半天了,請問是啥情況啊
我想裝pgsql模塊出錯
make && make install
/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c: In function ‘php_pgsql_do_connect’:
/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:1399:13: error: ‘PG_VERSION’ undeclared (first use in this function) if (atof(PG_VERSION) >= 7.2) { ^/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:1399:13: note: each undeclared identifier is reported only once for each function it appears in
In file included from /usr/local/php/include/php/main/php.h:39:0,
from /root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:35:/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c: In function ‘php_pgsql_get_link_info’:
/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:1644:45: error: ‘PG_VERSION’ undeclared (first use in this function)
add_assoc_string(return_value, "client", PG_VERSION, 1); ^
/usr/local/php/include/php/Zend/zend_API.h:393:111: note: in definition of macro ‘a(chǎn)dd_assoc_string’
#define add_assoc_string(__arg, __key, __str, __duplicate) add_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate)
^
/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c: In function ‘zif_pg_get_notify’:
/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:5284:12: error: ‘PG_VERSION’ undeclared (first use in this function)
if (atof(PG_VERSION) >= 9.0) {
^
/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c: In function ‘build_tablename’:
/root/下載/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:6506:9: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
token = table;
^
make: *** [pgsql.lo] Error 1
@song, 分別安裝上這幾個模塊就行了
@song, 這個是正常的信息
我在按照你的方法安裝sysvshm時出現(xiàn)
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
configure.in:3: warning: prefer named diversions
configure.in:3: warning: prefer named diversions
這個提示了,是怎么回事呢
軍哥你好,我的網(wǎng)站要使用workman插件,安裝的時候提示
* sysvshm [NOT SUPORT]
* sysvmsg [NOT SUPORT]
* libevent [NOT SUPORT]
這三個不支持,請問怎么安裝這三個擴(kuò)展呢
@okool, pecl安裝教程:http://bbs.vpser.net/thread-8721-1-1.html
你的這個一鍵安裝xxx的能不能做得通用一點(diǎn),目錄和配置文件和其它編譯安裝都不一致。對目錄記憶都不好,還要去看到底配置文件是哪些才修改。
一般 php擴(kuò)展直接用pecl就能安裝。但你一鍵卻沒提供。
懶得自己編譯,偷懶使用這一鍵安裝,現(xiàn)在偷懶不成,反留下一堆麻煩事。
@大佐,
補(bǔ)充一下,我進(jìn)pdo_informix里用的是 ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-informix=/opt/IBM/informix ←這個是informix csdk安裝路徑 然后 make & make install , php.ini 加 extension="pdo_informix.so",但是php -i|egrep "pdo|PDO"能看到pdo odbc mysql sqlite支持,沒有informix,國外網(wǎng)站上找了一些,步驟當(dāng)中都表示這里應(yīng)該能查到才對的.求賜教.
用這個方法安裝PDO_informix模塊,一切都o(jì)k,但是探針里看不到informix支持,phpinfo里有informix支持,用pecl install pdo_informix居然提示md5對不上...我安裝lnmp的時候選擇php是5.3.17,難道是版本高了? pdo_informix 是 1.3.1
最關(guān)鍵是,要怎樣安裝才能用 php -i|egrep "pdo|PDO"中看到對informix的support呀,請賜教,我搜索了好久沒有informix的相關(guān)帖子.
@凌舞雪祈, 肯定沒進(jìn)exif目錄
安裝exif模塊
./configure --with-php-config=/usr/local/php/bin/php-config
-bash: ./configure: 沒有那個文件或目錄
@Di Zhang, 看官網(wǎng)的安裝文檔http://yaf.laruence.com/manual/yaf.install.html#yaf.installation.linux,很標(biāo)準(zhǔn)的安裝流程,沒成功報什么錯?
請問怎么安裝yaf框架,我按照yaf官方的方法安裝沒有成功