在 Docker 容器内使用 ldap

Art*_*som 4 php ldap docker docker-container

我有 2 个 docker 容器。第一个 docker-container 内部是我的 lamp 应用程序,其中包含 php-7.3.4、apache2 ;第二个里面是mysql数据库。

我尝试连接第一个容器内的 LDAP 服务器。我继续进入“test-project”文件夹并配置 custom_config.inc.php

 $tlCfg->authentication['method'] = 'LDAP';

 $tlCfg->authentication['ldap_server'] = 'ldap.xyz.com';
 $tlCfg->authentication['ldap_port'] = '389';
 $tlCfg->authentication['ldap_version'] = '3';
 $tlCfg->authentication['ldap_root_dn'] = 'dc=xyz,dc=com';
 $tlCfg->authentication['ldap_bind_dn'] = 'uid=tl,ou=staff,dc=xyz,dc=com';
 $tlCfg->authentication['ldap_bind_passwd'] = 'XYZw';
 $tlCfg->authentication['ldap_tls'] = false; // true -> use tls
Run Code Online (Sandbox Code Playgroud)

当我尝试通过 ldap 凭据登录网页并抛出 http 错误 500 后

当我查看日志时,我得到:

错误: https: //i.stack.imgur.com/hST65.jpg

PHP Fatal error: Uncaught Error: Call to undefined function 
ldap_connect() in 
var/www/html/testlink/lib/functions/ldap_api.php:42\nStack trace :\n#0                     
/var/www/html/testlink/functions/ldap_api.php(165): 
ldap_connect_bind(Array)\n#1 
var/www/html/testlink/lib/functions/doAuthorize.php(200): 
ldap_authenticate('test_user', 'test')\n#2 
var/www/html/testlink/lib/functions/doAuthorize.php(90): 
auth_does_password_match(Object(tlUser), 'test')\n#3 
var/www/html/testlink/login.php(45): doAuthorize(Object(database), 
'test_user', 'test', Object(stdClass))\n#4 {main}\n thrown in 
var/www/html/testlink/lib/functions/ldap_api.php on line 42, refer: 
http://***.**.com/login.php
Run Code Online (Sandbox Code Playgroud)

如何配置 ldap?

Bor*_*iev 6

您需要将以下几行放入您的 php Dockerfile 中

RUN apt-get update && apt-get install -y \
    libldap2-dev

RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/
RUN docker-php-ext-install ldap
Run Code Online (Sandbox Code Playgroud)