结论:小皮面板安装 memcached 扩展的标准流程是三步:先在服务器装 memcached 服务端和 libmemcached 开发库,再给面板中对应 PHP 版本编译或安装 memcached.so,最后在 php.ini 写入 extension=memcached.so 并重启 PHP-FPM,用 php -m 或 phpinfo 验证。注意:memcached 和 memcache 不是同一个扩展,PHP 7/8 优先选 memcached。
memcached 和 memcache 扩展有什么区别?先选哪个?
结论:PHP 7/8 环境优先安装 memcached 扩展,不要装成旧的 memcache 扩展。memcached 扩展基于 libmemcached 库,支持更完整的 Memcached 协议、二进制协议、SASL 和较新 PHP 版本;memcache 扩展是旧一代实现,函数名也不同,例如 memcached 用 new Memcached(),memcache 用 memcache_connect()。两者不能互相替代,装了 memcache 不等于装了 memcached。
如果你在小皮面板的 PHP 扩展列表里看到的是“memcache”,那通常不是你要的。本文下面的操作都按 memcached 扩展处理。
小皮面板里怎么安装 memcached 服务端?
结论:memcached 扩展只是 PHP 客户端,真正提供缓存服务的是 memcached 服务端,必须先在系统里安装并启动,默认监听 127.0.0.1:11211。
CentOS / RHEL 系执行:
yum install -y memcached libmemcached libmemcached-devel gcc make autoconf
systemctl enable --now memcached
Ubuntu / Debian 系执行:
apt update
apt install -y memcached libmemcached-dev zlib1g-dev gcc make autoconf
systemctl enable --now memcached
安装后验证:
echo stats | nc 127.0.0.1 11211
如果返回 STAT 开头的统计信息,说明服务端正常。小皮面板主要负责网站、PHP、数据库等管理,memcached 服务端通常仍通过 SSH 用系统包管理器处理。
怎么给指定 PHP 版本安装 memcached 扩展?
结论:必须用小皮面板中对应 PHP 版本的 phpize 和 php-config 来编译,否则扩展会装到别的 PHP 版本上。小皮面板通常把 PHP 放在 /www/server/php/版本号 一类目录,具体以面板里“PHP 设置”显示的安装路径为准。
下面以 PHP 7.4、路径 /www/server/php/74 为例。先确认版本:
/www/server/php/74/bin/php -v
方式一:用 PECL 安装。先确保该 PHP 版本有 pecl:
/www/server/php/74/bin/pecl install memcached
安装过程中如果询问 libmemcached directory,填 /usr。
方式二:源码编译。适合面板没有 pecl 或需要指定版本的情况:
cd /tmp
wget https://pecl.php.net/get/memcached-3.2.0.tgz
tar -zxvf memcached-3.2.0.tgz
cd memcached-3.2.0
/www/server/php/74/bin/phpize
./configure --with-php-config=/www/server/php/74/bin/php-config --with-libmemcached-dir=/usr
make && make install
make install 完成后会输出 memcached.so 的路径。如果提示找不到 libmemcached,先确认 libmemcached-devel 或 libmemcached-dev 已安装,再重新 configure。
php.ini 怎么配置并重启生效?
结论:在对应 PHP 版本的 php.ini 中增加 extension=memcached.so,然后重启 PHP-FPM。如果 extension_dir 不匹配,直接写 memcached.so 的绝对路径。
编辑文件,例如:
vi /www/server/php/74/etc/php.ini
加入:
extension=memcached.so
保存后重启该 PHP 版本:
systemctl restart php-fpm-74
如果面板有“重启 PHP”按钮,也可以直接点对应版本重启。验证命令行:
/www/server/php/74/bin/php -m | grep memcached
Web 验证:在站点根目录建一个 info.php,内容为 <?php phpinfo();,通过 http://www.gj0.com/info.php 访问,搜索 memcached。注意 CLI 和 PHP-FPM 可能读取不同 php.ini,命令行有不一定代表 Web 有。
怎么测试 memcached 连接和排查常见故障?
结论:扩展加载成功后,用 PHP 脚本向 127.0.0.1:11211 写入再读取,能取到值就说明配置完成。
测试代码:
<?php
$m = new Memcached();
$m->addServer('127.0.0.1', 11211);
$m->set('test_key', 'ok', 60);
echo $m->get('test_key');
常见问题:php -m 没有 memcached,说明 php.ini 没写对或扩展未复制到 extension_dir;能加载但连接失败,检查 systemctl status memcached、11211 端口、防火墙和 SELinux;面板里 PHP 版本多,确认你改的是当前网站绑定的那个版本。需要远程连接时,改 /etc/sysconfig/memcached 或 /etc/memcached.conf 的监听地址,但公网环境不要直接暴露 11211,建议只允许内网 IP。
整体收束:小皮面板装 memcached 扩展的关键不是面板按钮,而是“服务端 + libmemcached + 对应 PHP 版本编译 + php.ini 启用 + 重启验证”这条链路。按 PHP 版本操作,别把 memcached 和 memcache 混用,基本一次就能配通。