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

Yii2基础模板配置缓存组件遇ApcCache/MemCache报错,PHP7.1.11如何解决?

解决Yii2缓存组件配置错误的方案

先帮你拆解两个核心问题:为什么用ApcCache报错,以及切换MemCache没生效的原因,一步步来解决:

一、ApcCache报错的解决(PHP7.1环境)

PHP7.0之后,老的APC扩展已经被APCU扩展取代了,你虽然配置了useApcu => true,但大概率是没装APCU扩展才触发报错,解决步骤如下:

  • 先检查APCU是否安装:
    1. 新建一个php文件,写入<?php phpinfo(); ?>,访问后搜索“apcu”,如果没有相关模块说明未安装;
    2. 或者在命令行执行php -m | grep apcu,没有输出就是未安装状态。
  • 安装APCU扩展:
    • 如果你是Ubuntu/Debian系统,执行sudo apt-get install php7.1-apcu(注意对应你的PHP版本);
    • CentOS/RHEL系统执行sudo yum install php71u-pecl-apcu;
    • 也可以用PECL安装:pecl install apcu,安装完成后在php.ini里添加extension=apcu.so,然后重启Apache/Nginx或者php-fpm服务。
  • 安装完成后,你的ApcCache配置就能正常工作了,保持现有配置里的useApcu => true即可。

二、切换MemCache没生效的原因

你看你的配置代码,'class' => 'yii\caching\MemCache'是被注释掉的!实际生效的还是ApcCache,所以报错完全一样。正确的MemCache配置应该改成这样:

'cache' => [ 
    // 注释掉ApcCache的配置项
    // 'class' => 'yii\caching\ApcCache', 
    // 'useApcu' => true, 
    'class' => 'yii\caching\MemCache',
    'keyPrefix' => 'myapp',
    // 可选:如果服务器装的是memcached扩展,开启下面这行
    // 'useMemcached' => true,
]

另外,使用MemCache还需要满足两个前提:

  1. 服务器上安装了Memcached服务(比如Ubuntu执行sudo apt-get install memcached);
  2. PHP安装了对应的扩展:要么是memcache扩展,要么是memcached扩展(根据你开启的useMemcached选项对应安装)。

三、开发环境备选方案:FileCache

如果不想折腾扩展,开发环境可以直接用文件缓存,配置简单,不需要额外安装任何扩展:

'cache' => [
    'class' => 'yii\caching\FileCache',
    'keyPrefix' => 'myapp',
]

内容的提问来源于stack exchange,提问作者yasir shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:50:53