simpleSAMLphp配置LDAP认证报错:未找到ldap模块
解决simpleSAMLphp LDAP模块未找到的异常
问题描述
配置simpleSAMLphp使用LDAP认证时触发No module named 'ldap' has been installed异常,尽管PHP的ldap扩展已启用。
配置的LDAP认证源(authsources.php):
'ldapauth' => [ 'ldap:LDAP', 'hostname' => 'ldap.saml.com', 'port' => 389, ... ],
完整报错堆栈:
SimpleSAML\Error\Error: UNHANDLEDEXCEPTION Backtrace: 2 public/_include.php:28 (SimpleSAML_exception_handler) 1 vendor/symfony/error-handler/ErrorHandler.php:607 (Symfony\Component\ErrorHandler\ErrorHandler::handleException) 0 [builtin] (N/A) Caused by: Exception: No module named 'ldap' has been installed. Backtrace: 8 src/SimpleSAML/Module.php:446 (SimpleSAML\Module::resolveClass) 7 src/SimpleSAML/Auth/Source.php:315 (SimpleSAML\Auth\Source::parseAuthSource) 6 src/SimpleSAML/Auth/Source.php:358 (SimpleSAML\Auth\Source::getById) 5 src/SimpleSAML/Auth/Simple.php:67 (SimpleSAML\Auth\Simple::getAuthSource) 4 src/SimpleSAML/Auth/Simple.php:156 (SimpleSAML\Auth\Simple::login) 3 [builtin] (call_user_func_array) 2 src/SimpleSAML/HTTP/RunnableResponse.php:72 (SimpleSAML\HTTP\RunnableResponse::sendContent) 1 vendor/symfony/http-foundation/Response.php:394 (Symfony\Component\HttpFoundation\Response::send) 0 public/module.php:14 (N/A)
问题根源
报错指向的是simpleSAMLphp自身的LDAP模块未安装,而非PHP的ldap扩展。PHP ldap扩展是底层依赖,但simpleSAMLphp需要单独安装对应的模块才能提供ldap:LDAP认证源。
解决方案
检查LDAP模块是否存在
查看simpleSAMLphp安装目录下的modules文件夹,确认是否有ldap子目录。如果没有,需要安装该模块。安装LDAP模块
- 若使用Composer管理依赖,执行以下命令:
composer require simplesamlphp/simplesamlphp-module-ldap - 手动安装:下载LDAP模块包,解压后将
ldap目录放到modules文件夹下。
- 若使用Composer管理依赖,执行以下命令:
启用LDAP模块
打开config/config.php,找到module.enable配置项,确保ldap设置为true:'module.enable' => [ 'ldap' => true, // 其他已启用的模块... ],清除缓存
删除simpleSAMLphp安装目录下cache文件夹内的所有文件,或通过管理界面执行缓存清理操作,确保配置生效。
完成以上步骤后,重新测试LDAP认证即可。
内容的提问来源于stack exchange,提问作者jacksc0tt
相关产品推荐
相关产品推荐

