php安裝memcached擴展
?
給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擴展