日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php memcached 扩展下载,编译安装 PHP 的 Memcached 扩展

發布時間:2025/4/16 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php memcached 扩展下载,编译安装 PHP 的 Memcached 扩展 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

image.png

前面章節我會先簡要說明一下安裝過程, 后面章節我會記錄在安裝期間踩過的坑.

Linux 下編譯軟件的步驟參見Linux 編譯軟件的步驟

服務器環境

CentOS 7

PHP 7.0.20

Nginx 1.10.1

安裝 PHP 擴展的通用流程

1.下載解壓

cd /usr/local/src #一般把第三方軟件的源碼放在這個目錄

wget http://xxx.com/ #軟件源碼下載地址

tar -zxvf 壓縮包 #解壓縮. 根據不同類型的壓縮包,使用不同的解壓縮命令, 比如 ".gz 壓縮包"使用 -zx , ".bz 壓縮包"使用 -jx

2.編譯安裝

cd /解壓縮后/的文件夾

/usr/local/bin/phpize #用 phpize 命令生成 configure 配置文件

./configure --with-php-config=/usr/local/php/bin/php-config #配置

make #編譯

sudo make install #安裝

3.修改 php.ini

在 php.ini 中添加:

extension=名稱.so # "名稱"為擴展的名稱. 或者可以用重定向的命令修改 php.ini sudo echo extension=名稱.so >> /etc/php.ini

4.重啟服務

php -m | grep 擴展名稱 #驗證是否正確安裝上了擴展

sudo systemctl reload php-fpm nginx #systemctl 是 CentOS 7 的命令

編譯安裝 Memcached 擴展

1.安裝 memcached

編譯安裝 memcached 依賴的 libevent 庫

cd /usr/local/src

wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz

tar -zxvf libevent-2.1.8-stable.tar.gz

cd libevent-2.1.8-stable

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

make && make test && sudo make install

- **編譯安裝 memcached**

cd /usr/local/src

wget http://memcached.org/files/memcached-1.4.39.tar.gz

tar -zxvf memcached-1.4.39.tar.gz

cd memcached-1.4.39.tar.gz

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

make && make test && sudo make install

2.安裝 PHP 的 Memcached 擴展

編譯安裝 Memcached 擴展插件依賴的 libmemcached 庫

cd /usr/local/src

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

tar -zxvf libmemcached-1.0.18.tar.gz

cd libmemcached-1.0.18.tar.gz

./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached/bin/memcached

make && make test && sudo make install

- **編譯安裝 PHP PECL 的 Memcached 擴展**

cd /usr/local/src

wget https://pecl.php.net/get/memcached-3.0.3.tgz

tar -zxvf memcached-3.0.3.tgz

cd memcached-3.0.3

/usr/local/bin/phpize #用 phpize 命令生成 configure 配置文件

./configure --with-php-config=/usr/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached

make && make test && sudo make install

驗證一下 memcached 插件是否正確安裝:

ls /usr/lib64/php/modules | grep memcached

3.修改 php.ini

vim /etc/php.ini #可以通過 whereis php 來查看 php.ini 文件的位置

在 php.ini 中添加:

extension=memcached.so

4.重啟服務

sudo systemctl reload php-fpm

編譯 Memcached 過程中踩過的坑

總共需要編譯哪些軟件?

總共需要編譯安裝 4 個軟件:

先安裝 Memcached 依賴的 libevent;

再安裝 PHP PECL 的 Memcached 插件依賴的 libmemcached 庫;

最后安裝 PHP PECL 的 Memcached 插件.

咳咳. 我曾經因為混淆了 Memcached 和 PHP 的 memcached 插件, 而浪費了很多時間. 囧

如何尋找 phpize 命令和 php-config 命令?

使用 whereis 命令, 比如:

whereis phpize #會顯示類似路徑, 像這樣 phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz

whereis php-config #會顯示類似路徑, 像這樣 php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz

或者使用 find 命令:

sudo find / -name phpize

sudo find / -name php-config

PS. php-config 是獲取所安裝的 PHP 配置信息的命令行腳本.

在編譯擴展時,如果安裝有多個 PHP 版本,可以在配置時用 --with-php-config 選項來指定使用哪一個版本編譯,該選項指定了相對應的 php-config 腳本的路徑.

沒有 php-config 命令怎么辦?

如果 PHP 是通過編譯安裝的, php-config 命令會在 PHP 安裝目錄的 bin 目錄下.

但是如果 PHP 是用 yum 安裝的, 是沒有 php-config的. 需要額外安裝相應版本的 php-devel 包:

# 因為我是用 yum 安裝的 php70u, 所以

yum search php70u-devel

sudo yum install php70u-devel.x86_64

之后 whereis php-config, 就會發現已經出現在 /usr/bin/php-config.

PS. "devel" 表示庫的源碼.

提醒: 用 yum 安裝庫, 不光要安裝庫本身(可執行文件), 往往還需要安裝庫的源碼 xxx-devel

注意:

網上有些建議直接安裝 php-devel:

yum install php-devel

但是我執行這個命令碰到這樣的報錯(估計由于這臺服務器之前安裝過 PHP 5.4):

Error: php70u-cli conflicts with php-cli-5.4.16-42.el7.x86_64

Error: php70u-common conflicts with php-common-5.4.16-42.el7.x86_64

Error: php70u-json conflicts with php-common-5.4.16-42.el7.x86_64

You could try using --skip-broken to work around the problem

You could try running: rpm -Va --nofiles --nodigest

所以建議還是用 yum 搜索安裝對應 PHP 版本的 devel 為妥.

用 yum 搜索不到高版本的 php-devel 怎么辦?

官方的 yum 倉庫可能沒有比較新的庫文件, 可以添加公認不錯的 ius 倉庫:

如果是 CentOS 7:

sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y

如果是 CentOS 6:

sudo yum install https://rhel6.iuscommunity.org/ius-release.rpm -y

在 PECL 中搜索 "memcached" 有 3 個結果, 如何選擇?

在 PECL 中搜索 "memcached" 有 3 個結果:

image.png

mysqlnd_memcache 是將 SQL 語句轉化成 MySQL InnoDB memcached Daemon, 可以排除;

memcache 最近的 stable 版本 是在 2012-09-22, 說明已經停止維護, 排除;

memcached 插件, 需要依賴 libmemcached 庫, 安裝比較麻煩, 不過更新更頻繁, 而且最新的 stable 版本是 2017-02-20. 所以選擇這個插件.

為什么 PHP 的 memcached 插件需要 phpize 命令來生成 configure 文件?

因為 PHP 插件和 PHP 是深度耦合的.

而每個人的 PHP 環境是不一樣的(PHP 版本不同), 所以需要根據環境來定制 configure.

比如分別在我的服務器和筆記本上執行 phpize 命令, 會獲得這樣結果:

image.png

image.png

兩者是不同的

編譯時報錯

編譯時報錯:

make -j2 all-am

make[1]: Entering directory `/usr/local/src/libmemcached-1.0.18'

CXX libhashkit/libhashkit_libhashkit_la-aes.lo

./libtool: line 1125: g++: command not found

make[1]: *** [libhashkit/libhashkit_libhashkit_la-aes.lo] Error 1

make[1]: Leaving directory `/usr/local/src/libmemcached-1.0.18'

make: *** [all] Error 2

根據高人指點, 安裝編譯時可以一股腦裝上這些依賴庫:

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel \

libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \

zlib zlib-devel glibc glibc-devel glib2 glib2-devel \

bzip2 bzip2-devel ncurses ncurses-devel \

curl curl-devel e2fsprogs e2fsprogs-devel \

krb5 krb5-devel libidn libidn-devel \

openssl openssl-devel openldap openldap-devel \

nss_ldap openldap-clients openldap-servers gd gd2 \

gd-devel gd2-devel perl-CPAN pcre-devel

如果報錯中包含 permission denied, 表示是用戶組的權限問題, 說明你在 make install 前面忘了加 sudo, 或者你可以 su 進入管理員帳號再進行編譯操作.

安裝后, 如何在 PHP 中使用 Memcached?

給個小例子:

在服務器中啟動 Memcached:

/usr/local/memcached/bin/memcached -m 64 -p 11211 -u nobody -d

參數

說明

默認值

-m

最大使用內存量(單位 MB)

64

-p

端口號

11211

-u

用戶名(在使用 root 運行的時候)

nobody

-d

做為后臺程序(Daemon)啟動

-

然后寫個簡單的 PHP 文件:

$mem = new Memcached(); //實例化一個 Memcached 的對象

$mem->addServer('127.0.0.1', 11211) or die ('Could not connect'); //連接 Memcached 服務器

$mem->set('name', 'phper'); //設置 key - value 值

echo $mem->get('name'); //通過 key 取 value

參考文章

文章歷史

2017/07/09 (第一次發布);

2017/07/09 寫了個 PHP 使用 Memcached 的小例子;

2017/07/10 修正拼寫錯誤(將 ./configure誤寫成了 .configure). 修正編譯 PHP 的 Memcached 插件時的編譯配置錯誤; 增加章節 -- "為什么 PHP 的 memcached 插件需要 phpize 命令來生成 configure 文件";

如果我的文章對你有用, 希望給些改進的建議, 或者打個"喜歡" _

總結

以上是生活随笔為你收集整理的php memcached 扩展下载,编译安装 PHP 的 Memcached 扩展的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。