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

Laravel 7会话阻塞报错:Call to undefined method Illuminate\Cache\FileStore::lock()

解决Laravel 7会话阻塞报错Call to undefined method Illuminate\Cache\FileStore::lock()

我之前碰到过一模一样的问题,其实你可能忽略了一个关键细节:会话阻塞功能底层依赖的是Laravel缓存系统来实现锁机制,而非会话驱动本身。你已经把会话驱动改成了database,但如果缓存驱动还是默认的file,就会触发这个错误——毕竟FileStore确实没有lock()方法,只有database、redis这类支持分布式锁的缓存驱动才具备这个能力。

下面是具体的解决步骤:

  1. 修改缓存驱动配置
    打开项目根目录的.env文件,找到CACHE_DRIVER配置项,将其从file替换为database(如果有redis环境,也可以用redis):

    CACHE_DRIVER=database
    
  2. 初始化缓存数据库表(使用database驱动时需要)
    如果之前从未用database作为缓存驱动,得先生成缓存表的迁移文件并执行迁移:

    php artisan cache:table
    php artisan migrate
    
  3. 彻底清理配置与缓存
    执行以下命令确保新配置完全生效,避免缓存残留:

    php artisan config:clear
    php artisan cache:clear
    composer dump-autoload
    

    如果你用的是本地开发服务器(比如Laravel Valet或内置PHP服务器),建议重启一下服务器,确保配置被重新加载。

  4. 验证缓存驱动实例
    可以临时加个测试路由,确认当前缓存驱动是否切换成功:

    Route::get('check-cache-driver', function() {
        dd(\Illuminate\Support\Facades\Cache::getStore());
    });
    

    访问这个路由,如果输出结果是Illuminate\Cache\DatabaseStore,说明配置已经生效。

完成这些操作后,再访问你的add-to-cart路由,应该就不会再出现lock()方法未定义的错误了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:07:38