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

Laravel 7.4在共享主机中切换CACHE_DRIVER为memcached后不生效问题

问题排查与解决步骤

  • 第一步:验证Memcached基础连接可用性
    共享主机通常会限制端口访问,即使phpinfo显示扩展已安装,也不代表程序可以正常连接Memcached服务。先在项目根目录新建临时测试文件mem_test.php,写入以下代码:
    <?php
    $mem = new Memcached();
    // 此处替换为你phpinfo中显示的Memcached实际主机和端口
    $mem->addServer('127.0.0.1', 11211);
    $testWrite = $mem->set('test_connection', 'success', 60);
    $testRead = $mem->get('test_connection');
    echo "写入结果:" . var_export($testWrite, true) . "<br>";
    echo "读取结果:" . var_export($testRead, true) . "<br>";
    echo "连接报错信息:" . $mem->getResultMessage();
    
    命令行执行php mem_test.php或者浏览器访问该文件地址,确认是否能正常读写。如果返回连接错误,直接联系主机服务商确认Memcached服务的连接参数(主机地址、端口、是否需要SASL认证)。
  • 第二步:补全必要的认证参数
    绝大多数共享主机的Memcached服务为了多用户隔离,会强制开启SASL认证,你之前认为非必填的sasl相关参数实际是必填项。请到主机商的控制面板找到Memcached对应的账号密码,添加到.env文件中:
    MEMCACHED_USERNAME=你的主机提供的Memcached账号
    MEMCACHED_PASSWORD=你的主机提供的Memcached密码
    # 部分主机要求配置持久化ID,可随意填写一个唯一字符串即可
    MEMCACHED_PERSISTENT_ID=my_laravel_app_mem
    
  • 第三步:验证Laravel Memcached驱动本身是否正常工作
    切换缓存驱动后,原file驱动下存储的缓存不会自动同步到Memcached,你测试cache()->has('countries')返回false不一定是驱动失效,可能是Memcached里还没有生成该缓存。执行以下测试代码验证驱动:
    <?php
    // 写入测试
    cache()->put('mem_demo', 'memcached_worked', 300);
    // 读取测试
    echo cache()->get('mem_demo');
    // 也可以指定存储驱动调用,排除默认驱动配置错误问题
    echo \Cache::store('memcached')->get('mem_demo');
    
    如果能正常输出memcached_worked,说明驱动配置已经生效,重新生成你的countries等业务缓存即可正常使用。
  • 第四步:排查缓存前缀和配置缓存问题
    1. 检查config/cache.php中的prefix配置,确认.env中没有配置错误的CACHE_PREFIX参数,避免缓存键名不匹配
    2. 如果你之前执行过php artisan config:cache生成了配置缓存,修改.env后必须重新执行php artisan config:cache才能生效,或者直接删除bootstrap/cache/config.php文件让Laravel实时读取配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:18:00