Kamailio配置lock函数报错:已加载tm.so模块仍无法识别命令
Kamailio配置中lock命令未识别问题排查
配置代码
$var(hjoin) = 0; lock("$rU"); $var(hjoin) = $sht(vtp=>join::$tU); $var(hstored) = $sht(vtp=>stored::$tU); $sht(vtp=>join::$tU) = $null;
错误信息
Error -> Sep 17 04:50:02 kamailio: ERROR: [core/cfg.y:3870]: yyparse(): cfg. parser: failed to find command lock (params 1) Sep 17 04:50:02 kamailio: CRITICAL: [core/cfg.y:4011]: yyerror_at(): parse error in config file /etc/kamailio/kamailio.cfg, line 715, column 12: unknown command, missing loadmodule?#012
问题说明
已知lock命令属于tm.so模块,且已在配置中加载该模块,但仍出现上述命令未被识别的解析错误。
排查解决步骤
- 检查tm模块加载顺序:确保
loadmodule "tm.so"语句位于使用lock命令的代码行之前,Kamailio需先加载模块才能识别其提供的命令。 - 验证模块路径配置:若tm.so不在默认模块目录,需通过
modulepath参数指定正确路径,例如:modulepath "/usr/lib/kamailio/modules/" loadmodule "tm.so" - 确认版本兼容性:不同Kamailio版本中,lock命令的归属或语法可能存在差异,核对当前使用版本的官方文档,确认lock命令的正确用法及所属模块。
- 查看模块加载日志:启动Kamailio时添加
-ddd调试参数,查看启动日志中tm模块的加载状态,排查是否存在模块加载失败的报错。 - 检查命令拼写:确保lock命令拼写正确,Kamailio配置命令区分大小写,需全部小写。
内容的提问来源于stack exchange,提问作者Fatima Zariwala
相关产品推荐
相关产品推荐

