php 7.3 必须手动为宝塔中已选版本安装并启用 memcached 扩展,仅点软件商店蓝色 memcached 图标只装服务端(监听 127.0.0.1:11211),不提供 php 类;未装扩展则 new memcached() 报 class not found。

PHP 7.3 必须手动装 memcached 扩展,宝塔点「Memcached」图标只装服务端,不带 PHP 通信能力——new Memcached() 会直接报 Class 'Memcached' not found。
宝塔里点安装的 Memcached 到底是什么?
那个蓝色图标只是帮你执行了 yum install memcached(CentOS)或 apt install memcached(Ubuntu/Debian),装的是服务端进程(daemon),监听 127.0.0.1:11211。它和 PHP 完全无关,不提供任何类、函数或扩展。
验证服务是否真在跑:
-
systemctl status memcached—— 看状态是不是 active (running) -
netstat -tuln | grep :11211—— 必须有输出,否则没监听 - 宝塔界面显示「运行中」≠ PHP 能连上,这只是个后台进程状态
PHP 7.3 怎么装 memcached 扩展才生效?
宝塔不会自动为 PHP 7.3 启用该扩展,必须人工干预:
- 进宝塔 → 「软件管理」→ 找到你站点实际用的 PHP 7.3 版本 → 「设置」→ 「安装扩展」→ 勾选
memcached(注意不是memcache,少个d是淘汰版) - 勾完立刻点「重载配置」,否则
phpinfo()里搜不到memcached support - CLI 验证:
php -m | grep memcached应输出memcached - Web 验证:建
info.php写<?php phpinfo(); ?>,浏览器打开后搜索memcached - 常见失败原因:
memcached_connect被加进 PHP 的「禁用函数」列表,要去宝塔「PHP 设置」→ 「禁用函数」页删掉它
连接测试失败的三个高频原因
写好 new Memcached() 却连不上,别急着重装,先查这三项:
- 服务端根本没运行:
systemctl start memcached启动,再确认netstat -tuln | grep :11211 - PHP 版本错配:你在 PHP 7.3 装了扩展,但网站实际用的是 PHP 8.0(宝塔站点设置里可查),扩展就白装
- 连接超时卡住几秒后报
Failed to connect to 127.0.0.1:11211:检查服务器防火墙(firewall-cmd --permanent --add-port=11211/tcp)、SELinux(临时关:setenforce 0)、或云厂商安全组是否放行该端口
PHP 代码里怎么用才不出错?
Memcached 类默认不自动连接任何服务器,new 之后不调用 addServer(),后续所有 set()/get() 都静默失败(返回 false,不抛异常):
- 单机部署:
$mc->addServer('127.0.0.1', 11211) -
set()第三个参数是相对秒数,不是时间戳;传3600表示 1 小时后过期,传大于 2592000(30 天秒数)的值会被当时间戳处理,缓存可能长期不更新 - 不要复用全局实例做长连接——PHP-FPM 多进程下 fork 后 socket 状态可能损坏,推荐每次请求新建实例
-
get()返回false无法区分“key 不存在”和“网络错误”,必须用$mc->getResultCode()判断,例如Memcached::RES_NOTFOUND或Memcached::RES_SUCCESS
最易被忽略的一点:扩展和服务都通了,但业务层仍读数据库,大概率是 WordPress 没放对 /wp-content/object-cache.php,或 Laravel 没配好缓存驱动为 memcached,而不是只改了 .env 里的地址。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











