1. 程式人生 > >php安裝memcached擴展

php安裝memcached擴展

-m mark tab height onf memcache get ces yum安裝

PHP為了可以與memcached服務器端交互,有兩個PHP擴展可以使用:memcache擴展和memcached擴展。安裝兩個中的任一個擴展都可與memcached服務器實現交互。memcached擴展比較新,相對來說性能各方面可能會好一點。實際工作中,安裝哪個擴展最終可能還是取決於開發人員使用的是哪個擴展。我這裏介紹如何安裝兩個中的memcached擴展。我的操作系統是CentOS 6.5版本的。

?

給PHP 5.6安裝memcached擴展

以前,使用PHP 5.6時,要安裝memcached擴展,我通常是這樣做的。

?

1、先yum安裝php-devel。這個php-devel包含了編譯PHP擴展所需的文件。

yum install php-devel

?

2、memcached擴展依賴於libmemcached庫。這個libmemcached是C/C++語言寫的memcached客戶端工具和庫。所以,使用yum安裝libmemcached庫:

yum install libmemcached libmemcached-devel

?

3、然後,使用pecl命令直接自動化下載、編譯和安裝memcached擴展:

pecl install memcached

# 現在,應該要指定特定版本才能安裝成功,因為默認安裝最新穩定版的擴展,而最新穩定版擴展現在是適用於PHP 7的

# 安裝過程中,會詢問libmemcached的安裝目錄(含有include/libmemcached/memcached.h的目錄),我這裏是/usr目錄。

?

4、最後,在php.ini配置文件中加上下面的語句,並重啟PHP程序即大功告成:

extension=memcached.so

?

給PHP 7安裝memcached擴展

但是,當使用PHP 7時,問題就來了。當我使用pecl命令安裝memcached擴展時就報下面的錯:

技術分享圖片

意思是說libmemcached不支持sasl,所以failed了,可以使用--disable-memcached-sasl選項來禁用這個檢查。pecl自動安裝改不了編譯選項,那我就把memcached擴展包下載下來,手工編譯吧。結果,一進行編譯就報一大堆錯誤,大概應該就是程序語法不兼容吧。下面是示例截圖:

技術分享圖片

但這就有點費解了,這是什麽原因啊。其實,如果把memcached擴展包下載下來,看裏面的說明,就會發現,memcached 3.x版本擴展需要libmemcached 1.x及以上版本,而當前默認安裝的就是memcached擴展3.0.3版本。

技術分享圖片

而我使用yum命令安裝的libmemcached才0.31版本:

技術分享圖片

所以,結論是,libmemcached版本太低。所以還是乖乖先編譯一個高版本的libmemcached,再安裝memcached擴展吧。

?

下面是給PHP 7安裝memcached擴展的完整步驟。

1、先到libmemcached的官網http://libmemcached.org/libMemcached.html下載libmemcached安裝包,1.x版本,建議是1.0.18或以上。我這裏直接使用命令下載了:

wget https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz

解壓:

tar -xvf libmemcached-1.0.18.tar.gz

編譯安裝到/usr/local/libmemcached目錄:

cd libmemcached-1.0.18

./configure --prefix=/usr/local/libmemcached

make

make install

?

2、直接使用pecl命令安裝適用於PHP 7的memcached擴展,我使用的是最新的memcached 擴展3.0.3穩定版:

pecl install memcached-3.0.3

# 在提示libmemcached directory [no]時,輸入libmemcached的安裝目錄/usr/local/libmemcached

看,這次就成功編譯並安裝了:

技術分享圖片

?

3、最後,就在php.ini配置文件中加上下面的語句,並重啟PHP程序就行了:

extension=memcached.so

php安裝memcached擴展