Tengo 2 contenedores docker. Dentro del primer docker-container está mi aplicación de lámpara con php-7.3.4, apache2; dentro del segundo está la base de datos mysql.
Intenté conectar el servidor ldap dentro del primer contenedor. Procedo a la carpeta 'test-project' y configuro 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 tlsDespués de intentar iniciar sesión en la página web a través de las credenciales ldap y arrojar el error http 500
Cuando vi los registros obtuve:
Error: 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¿Cómo puedo configurar ldap?
Debe poner las siguientes líneas en su 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 ldapA su contenedor Apache/PHP le falta la extensión PHP LDAP. Deberá reconstruir ese contenedor para que incluya la extensión PHP LDAP o necesitará usar una biblioteca LDAP de Userland como https://packagist.org/packages/freedsx/LDAP (nunca lo usó, así que no puedo decir nada al respecto). Tenga en cuenta que la biblioteca Userland utiliza una API diferente a la extensión de PHP, por lo que deberá volver a escribir su código. Entonces, al final, reconstruir su contenedor puede ser la solución más fácil.