You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel项目使用Memcached报错:Class 'Memcached' not found 求助

解决Laravel中"Class 'Memcached' not found"的问题

问题根源

你遇到的核心问题是Laravel的Memcached缓存驱动依赖的是php-memcached扩展(带d的版本),而你当前在php.ini中启用的是memcache.dll(不带d的旧版扩展)。这两个是完全不同的PHP扩展,API设计也不一样,所以Laravel找不到它需要的Memcached类。

你的原生测试代码用的是Memcache类(不带d),所以能正常运行,但Laravel的memcached驱动是基于Memcached类(带d)开发的,两者并不兼容。

解决方案(Windows环境)

按照以下步骤操作即可解决:

  1. 下载对应版本的php_memcached.dll
    要严格匹配你的PHP版本(比如7.4、8.1)、线程安全属性(TS/NTS)以及系统架构(x86/x64)。你可以从PECL的memcached扩展页面获取对应版本的dll文件。

  2. 放置扩展文件
    将下载好的php_memcached.dll复制到XAMPP安装目录下的php/ext文件夹中。

  3. 修改php.ini配置
    打开XAMPP的php.ini文件,找到你之前添加的extension=memcache.dll,将其替换为:

    extension=php_memcached.dll
    

    如果需要同时保留旧版memcache扩展,也可以直接新增这一行,Laravel会自动优先使用带d的版本。

  4. 重启Apache服务器
    在XAMPP控制面板中重启Apache服务,确保新的扩展被正确加载。

  5. 验证扩展是否加载成功
    创建一个phpinfo.php文件,内容如下:

    <?php phpinfo(); ?>
    

    访问这个文件后搜索"memcached",如果能看到对应的扩展信息,说明加载成功。

  6. 重新测试Laravel代码
    现在再运行你的Laravel代码:

    public function index(){
        Cache::store('memcached')->put('bar', 'baz', 10);
    }
    

    应该就不会再出现"Class 'Memcached' not found"的错误了。

额外注意事项

  • 如果你的Memcached服务器配置了用户名和密码,记得在cache.php中取消sasl配置的注释,并在.env文件中设置MEMCACHED_USERNAME和MEMCACHED_PASSWORD。
  • 确认.env文件中的MEMCACHED_HOST和MEMCACHED_PORT与你的Memcached服务器配置一致(默认localhost和11211没问题)。

内容的提问来源于stack exchange,提问作者Anil Kumar Sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:54:24