必须加载 mod_socache_shmcb 模块且置于 mod_ssl 之前,否则 apache 无法识别 shmcb 后端;还需确保路径无空格/中文、文件名匹配(windows 为 .dll,linux/macos 为 .so)、权限正确。

为什么 Apache 启动时提示 “SSLSessionCache: 'shmcb' session cache not supported”
这不是证书或配置语法错误,而是 mod_socache_shmcb 模块根本没加载成功。Apache 在解析 SSLSessionCache shmcb 时,发现当前可用的 socache 后端列表为空(日志里显示 known names: 后面啥也没有),说明模块未注册——哪怕配置写对了,也完全不生效。
必须启用 mod_socache_shmcb.so,且顺序不能错
mod_socache_shmcb 是独立模块,不是 mod_ssl 的子功能,它必须显式加载,而且得在 mod_ssl 之前加载。常见错误是只开了 ssl_module,却漏掉这行:
- 打开
XAMPP\apache\conf\httpd.conf - 找到
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so,删掉开头的# - 确认这行出现在
LoadModule ssl_module modules/mod_ssl.so之前(Apache 模块依赖有顺序) - 保存后重启 Apache,别只点 Restart,先 Stop 再 Start
Windows 下路径含空格或中文会导致模块静默加载失败
即使你取消了注释,mod_socache_shmcb.so 仍可能根本没进内存——尤其当 XAMPP 装在 C:\Program Files\xampp 或 D:\我的开发环境\xampp 这类路径时。Apache 的 Windows 加载器对空格和 Unicode 路径处理极脆弱,LoadModule 行会直接跳过,日志里也不报错,只留一句 “not supported”。
- 检查
ServerRoot和LoadModule中的路径是否含空格或中文 - 最稳妥做法:重装到纯 ASCII 路径,如
D:\xampp - 如果已安装,不要剪切迁移;先用
sc delete Apache2.4卸载服务,再重装
XAMPP 版本差异导致模块文件名不一致
部分新版 XAMPP(尤其是 8.2+)把 mod_socache_shmcb.so 改名为 mod_socache_shmcb.dll(Windows)或压根没打包该模块。直接启用会报 Cannot load module,但错误信息未必指向具体文件。
- 进
XAMPP\apache\modules\目录,确认是否存在mod_socache_shmcb.*文件 - Windows 下找
.dll,macOS/Linux 下找.so;名称必须完全匹配httpd.conf里的LoadModule行 - 若缺失,可从同版本官方 XAMPP 安装包提取,或降级使用带该模块的稳定版(如 XAMPP 8.0.30)
shmcb 看起来“不被支持”。别只盯着 SSL 配置,先确保 mod_socache_shmcb 真正在运行时被 Apache 列入可用模块列表。










