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

Laminas项目升级PHP7.4至8.1时Memcache服务解析失败求助

解决Laminas项目PHP8.1升级后Memcache缓存服务解析失败问题

问题核心

报错Unable to resolve service "memcache" to a factory的本质是服务管理器未正确注册Memcache存储适配器的工厂类,同时现有服务配置存在错误。

修复步骤

1. 修正服务管理器的抽象工厂配置

你在module.config.php的abstract_factories中错误添加了Laminas\Cache\Storage\Adapter\Memcache(这不是抽象工厂类),需替换为负责解析缓存适配器工厂的正确抽象类:

'service_manager' => array(
    'abstract_factories' => array(
        'Laminas\Cache\Service\StorageCacheAbstractServiceFactory',
        'Laminas\Log\LoggerAbstractServiceFactory',
        'Laminas\Cache\Service\StorageAdapterAbstractServiceFactory' // 新增这行
    ),
),

2. 匹配Memcache扩展与适配器配置

memcache和memcached是两个独立的PHP扩展,需确保配置与服务器安装的扩展一致:

  • 若服务器装的是memcache扩展,保持caches.php中adapter => 'memcache'不变;
  • 若装的是memcached扩展,需将adapter改为'memcached',同时确认扩展已在PHP中启用。

3. 补全Memcache适配器的必要配置

即使服务解析成功,缺少服务器连接信息也无法正常使用缓存,需在options中添加服务器配置:

'memcached' => array(
    'adapter' => 'memcache',
    'options' => array(
        'namespace' => 'IDSSO',
        'ttl' => 900,
        'servers' => array( // 添加缓存服务器信息
            array(
                'host' => '127.0.0.1',
                'port' => 11211,
                'weight' => 1
            )
        )
    ),
    'plugins' => array(
        array(
            'name' => 'exception_handler',
            'options' => array(
                'throw_exceptions' => false,
            ),
        ),
    )
),

4. 确保依赖安装完整

执行以下命令刷新依赖并生成正确的自动加载文件:

composer update
composer dump-autoload

额外说明

Laminas Cache 3.x调整了缓存适配器的工厂注册逻辑,laminas/laminas-cache-storage-deprecated-factory仅用于兼容旧配置格式,需确保你的缓存配置结构符合3.x版本规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:25:30