Используйте ldap внутри Docker-контейнера - PullRequest
0 голосов
/ 10 июня 2019

У меня есть 2 док-контейнера. Внутри первого docker-контейнера мое приложение лампы с 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

После того, как я попытался войти на веб-страницу через учетные данные ldap и выдал ошибку http 500

Когда я просматривал логи, я получал:

Ошибка: https://imgur.com/a/HQEZT3X

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

Как мне настроить ldap?

1 Ответ

0 голосов
/ 10 июня 2019

В контейнере YourApache / PHP отсутствует расширение PHP LDAP. Вам нужно будет либо перестроить этот контейнер так, чтобы он включал расширение PHP LDAP, либо вам нужно использовать LDAP-библиотеку Userland, например https://packagist.org/packages/freedsx/LDAP (никогда не использовал ее, поэтому ничего не могу сказать по этому поводу). Помните, что библиотека Userland использует API, отличный от расширения PHP, поэтому вам придется переписать свой код. Таким образом, в конечном итоге восстановление вашего контейнера может стать более простым решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...