如何引入Memcached类?已按PHP官方手册安装仍报错
我已经按照PHP官方手册完成了Memcached的安装,但在使用以下代码时:
$mc = new Memcached(); $mc->addServer("localhost", 11211); $mc->set("foo", "Hello!"); $mc->set("bar", "Memcached..."); $arr = array( $mc->get("foo"), $mc->get("bar") ); var_dump($arr);die;
出现了如下错误:
Uncaught Error: Class 'Memcached' not found in /var/www/html/api/invoices_list_full.php:32 Stack trace: #0 {main} thrown in /var/www/html/api/invoices_list_full.php on line 32
排查解决步骤
确认扩展是否加载
执行命令php -m,查看输出列表中是否存在memcached。如果没有,说明扩展未成功加载。检查php.ini配置
用php --ini找到PHP配置文件路径,确认文件中存在一行extension=memcached.so(Linux/macOS环境)或extension=php_memcached.dll(Windows环境)。若没有则手动添加,之后重启Web服务器或PHP-FPM服务。区分Memcached与Memcache扩展
注意不要混淆两个扩展:Memcached是基于libmemcached的官方推荐扩展,而Memcache是另一个老旧扩展。你的代码调用的是Memcached类,必须确保安装的是前者而非后者。验证扩展状态
创建phpinfo.php文件,内容为<?php phpinfo(); ?>,访问该页面并搜索memcached。若能找到相关配置信息,说明扩展加载正常;若找不到,需重新安装扩展并核对配置。检查CLI与Web环境的配置一致性
部分场景下,CLI模式使用的php.ini与Web服务器使用的配置文件不同。执行php -i | grep php.ini查看CLI环境的配置文件路径,和Web页面phpinfo显示的路径对比,确保两者都加载了memcached扩展。
内容的提问来源于stack exchange,提问作者Toma Tomov

