LDAP stoppped working (Active Directory) #5413

Closed
opened 2026-02-05 10:02:54 +03:00 by OVERLORD · 14 comments
Owner

Originally created by @Utility9298 on GitHub (Aug 28, 2025).

Describe the Bug

Hi everyone,
my LDAP setup does not seem to work anymore. No minor changes were made on the LDAP server (active directory) or bookstack, except default system updates.

#1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()
#2 /var/www/bookstack/app/Access/Ldap.php(104): ldap_bind()
#3 /var/www/bookstack/app/Access/LdapService.php(201): BookStack\Access\Ldap->bind()
#4 /var/www/bookstack/app/Access/LdapService.php(51): BookStack\Access\LdapService->bindSystemUser()
#5 /var/www/bookstack/app/Access/LdapService.php(107): BookStack\Access\LdapService->getUserWithAttributes()
#6 /var/www/bookstack/app/Access/Guards/LdapSessionGuard.php(72): BookStack\Access\LdapService->getUserDetails()
#7 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(340): BookStack\Access\Guards\LdapSessionGuard->attempt()
#8 /var/www/bookstack/app/Access/LoginService.php(164): Illuminate\Auth\AuthManager->__call()
#9 /var/www/bookstack/app/Access/Controllers/LoginController.php(134): BookStack\Access\LoginService->attempt()
#10 /var/www/bookstack/app/Access/Controllers/LoginController.php(74): BookStack\Access\Controllers\LoginController->attemptLogin()
#11 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): BookStack\Access\Controllers\LoginController->login()
#12 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction()
#13 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\Routing\ControllerDispatcher->dispatch()
#14 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\Route->runController()
#15 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\Routing\Route->run()
#16 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#17 /var/www/bookstack/app/Http/Middleware/CheckGuard.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#18 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\CheckGuard->handle()
#19 /var/www/bookstack/app/Http/Middleware/RedirectIfAuthenticated.php(28): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#20 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\RedirectIfAuthenticated->handle()
#21 /var/www/bookstack/app/Http/Middleware/Localization.php(32): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#22 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\Localization->handle()
#23 /var/www/bookstack/app/Http/Middleware/RunThemeActions.php(26): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#24 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\RunThemeActions->handle()
#25 /var/www/bookstack/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#26 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\CheckEmailConfirmed->handle()
#27 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#28 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
#29 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#30 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#31 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#32 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
#33 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Session\Middleware\StartSession->handle()
#34 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#35 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#36 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#37 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#38 /var/www/bookstack/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#39 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\ApplyCspRules->handle()
#40 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#41 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\Pipeline\Pipeline->then()
#42 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\Routing\Router->runRouteWithinStack()
#43 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\Routing\Router->runRoute()
#44 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\Routing\Router->dispatchToRoute()
#45 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\Routing\Router->dispatch()
#46 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#47 /var/www/bookstack/app/Http/Middleware/PreventResponseCaching.php(28): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#48 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\PreventResponseCaching->handle()
#49 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#50 /var/www/bookstack/app/Http/Middleware/TrustProxies.php(41): Illuminate\Http\Middleware\TrustProxies->handle()
#51 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\TrustProxies->handle()
#52 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#53 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#54 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
#55 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#56 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Http\Middleware\ValidatePostSize->handle()
#57 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#58 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
#59 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#60 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Pipeline\Pipeline->then()
#61 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#62 /var/www/bookstack/public/index.php(23): Illuminate\Foundation\Http\Kernel->handle()
#63 {main}

My .env does look like this:

#LDAP
AUTH_METHOD=ldap
LDAP_SERVER=ldaps://domain.name:636
LDAP_BASE_DN="OU=BENUTZER,OU=domain,DC=domain,DC=name"
#LDAP_DN="CN=ldapsync,OU=BEN_MICdiv,OU=BENUTZERsec,OU=domain,DC=domain,DC=name"
#LDAP_PASS="supersecretpassword"
LDAP_USER_FILTER=(&(sAMAccountName={user}))
LDAP_VERSION=3
LDAP_ID_ATTRIBUTE=BIN;objectGUID
LDAP_EMAIL_ATTRIBUTE=mail
LDAP_DISPLAY_NAME_ATTRIBUTE=sAMAccountName
LDAP_START_TLS=false
LDAP_TLS_INSECURE=false
LDAP_THUMBNAIL_ATTRIBUTE=thumbnailPhoto

Steps to Reproduce

  1. Set up LDAP with Active Directory
  2. Log-In
  3. Receive Error

Expected Behaviour

Login does work

Screenshots or Additional Context

No response

Browser Details

No response

Exact BookStack Version

V25.07

Originally created by @Utility9298 on GitHub (Aug 28, 2025). ### Describe the Bug Hi everyone, my LDAP setup does not seem to work anymore. No minor changes were made on the LDAP server (active directory) or bookstack, except default system updates. ```#0 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(256): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() #1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}() #2 /var/www/bookstack/app/Access/Ldap.php(104): ldap_bind() #3 /var/www/bookstack/app/Access/LdapService.php(201): BookStack\Access\Ldap->bind() #4 /var/www/bookstack/app/Access/LdapService.php(51): BookStack\Access\LdapService->bindSystemUser() #5 /var/www/bookstack/app/Access/LdapService.php(107): BookStack\Access\LdapService->getUserWithAttributes() #6 /var/www/bookstack/app/Access/Guards/LdapSessionGuard.php(72): BookStack\Access\LdapService->getUserDetails() #7 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(340): BookStack\Access\Guards\LdapSessionGuard->attempt() #8 /var/www/bookstack/app/Access/LoginService.php(164): Illuminate\Auth\AuthManager->__call() #9 /var/www/bookstack/app/Access/Controllers/LoginController.php(134): BookStack\Access\LoginService->attempt() #10 /var/www/bookstack/app/Access/Controllers/LoginController.php(74): BookStack\Access\Controllers\LoginController->attemptLogin() #11 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): BookStack\Access\Controllers\LoginController->login() #12 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction() #13 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\Routing\ControllerDispatcher->dispatch() #14 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\Route->runController() #15 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\Routing\Route->run() #16 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Routing\Router->Illuminate\Routing\{closure}() #17 /var/www/bookstack/app/Http/Middleware/CheckGuard.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #18 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\CheckGuard->handle() #19 /var/www/bookstack/app/Http/Middleware/RedirectIfAuthenticated.php(28): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #20 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\RedirectIfAuthenticated->handle() #21 /var/www/bookstack/app/Http/Middleware/Localization.php(32): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #22 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\Localization->handle() #23 /var/www/bookstack/app/Http/Middleware/RunThemeActions.php(26): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #24 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\RunThemeActions->handle() #25 /var/www/bookstack/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #26 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\CheckEmailConfirmed->handle() #27 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #28 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle() #29 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #30 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\View\Middleware\ShareErrorsFromSession->handle() #31 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #32 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest() #33 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Session\Middleware\StartSession->handle() #34 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #35 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle() #36 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #37 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\EncryptCookies->handle() #38 /var/www/bookstack/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #39 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\ApplyCspRules->handle() #40 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #41 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\Pipeline\Pipeline->then() #42 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\Routing\Router->runRouteWithinStack() #43 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\Routing\Router->runRoute() #44 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\Routing\Router->dispatchToRoute() #45 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\Routing\Router->dispatch() #46 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}() #47 /var/www/bookstack/app/Http/Middleware/PreventResponseCaching.php(28): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #48 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\PreventResponseCaching->handle() #49 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #50 /var/www/bookstack/app/Http/Middleware/TrustProxies.php(41): Illuminate\Http\Middleware\TrustProxies->handle() #51 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\TrustProxies->handle() #52 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #53 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle() #54 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\TrimStrings->handle() #55 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #56 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Http\Middleware\ValidatePostSize->handle() #57 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #58 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle() #59 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #60 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Pipeline\Pipeline->then() #61 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter() #62 /var/www/bookstack/public/index.php(23): Illuminate\Foundation\Http\Kernel->handle() #63 {main} ``` My .env does look like this: ``` #LDAP AUTH_METHOD=ldap LDAP_SERVER=ldaps://domain.name:636 LDAP_BASE_DN="OU=BENUTZER,OU=domain,DC=domain,DC=name" #LDAP_DN="CN=ldapsync,OU=BEN_MICdiv,OU=BENUTZERsec,OU=domain,DC=domain,DC=name" #LDAP_PASS="supersecretpassword" LDAP_USER_FILTER=(&(sAMAccountName={user})) LDAP_VERSION=3 LDAP_ID_ATTRIBUTE=BIN;objectGUID LDAP_EMAIL_ATTRIBUTE=mail LDAP_DISPLAY_NAME_ATTRIBUTE=sAMAccountName LDAP_START_TLS=false LDAP_TLS_INSECURE=false LDAP_THUMBNAIL_ATTRIBUTE=thumbnailPhoto ``` ### Steps to Reproduce 1. Set up LDAP with Active Directory 2. Log-In 3. Receive Error ### Expected Behaviour Login does work ### Screenshots or Additional Context _No response_ ### Browser Details _No response_ ### Exact BookStack Version V25.07
OVERLORD added the 🐛 Bug label 2026-02-05 10:02:54 +03:00
Author
Owner

@ssddanbrown commented on GitHub (Aug 28, 2025):

Hi @Utility9298,
Can you share the log line just before the content you shared? The most important line should be about one line above what's provided, and will typically start with the log date/time.

Also, please confirm your exact host operating system, and its exact version.

@ssddanbrown commented on GitHub (Aug 28, 2025): Hi @Utility9298, Can you share the log line just before the content you shared? The most important line should be about one line above what's provided, and will typically start with the log date/time. Also, please confirm your exact host operating system, and its exact version.
Author
Owner

@Utility9298 commented on GitHub (Aug 28, 2025):

I did some more testing:

I can succesfully run ldapsearch as user www-data with my given configuration.
This let's me think it is likely a bookstack issue.

@Utility9298 commented on GitHub (Aug 28, 2025): I did some more testing: I can succesfully run ldapsearch as user www-data with my given configuration. This let's me think it is likely a bookstack issue.
Author
Owner

@Utility9298 commented on GitHub (Aug 28, 2025):

Hi @ssddanbrown
here is the beginning of the log file:

[2025-08-28 13:25:43] production.ERROR: ldap_bind(): Unable to bind to server: Can't contact LDAP server {"exception":"[object] (ErrorException(code: 0): ldap_bind(): Unable to bind to server: Can't contact LDAP server at /var/www/bookstack/app/Access/Ldap.php:104)
[stacktrace]
#0 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(256): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()

I am runnning ubuntu 24.04.3 with bookstack v25.07
As mentioned above, I can sucessfully run ldapsearch from command line directly...

@Utility9298 commented on GitHub (Aug 28, 2025): Hi @ssddanbrown here is the beginning of the log file: ``` [2025-08-28 13:25:43] production.ERROR: ldap_bind(): Unable to bind to server: Can't contact LDAP server {"exception":"[object] (ErrorException(code: 0): ldap_bind(): Unable to bind to server: Can't contact LDAP server at /var/www/bookstack/app/Access/Ldap.php:104) [stacktrace] #0 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(256): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError() ``` I am runnning ubuntu 24.04.3 with bookstack v25.07 As mentioned above, I can sucessfully run ldapsearch from command line directly...
Author
Owner

@ssddanbrown commented on GitHub (Aug 28, 2025):

Looking at your config, I see LDAP_SERVER=ldaps://domain.name:636.

  • Are you 100% sure you're using LDAPS? That's a different thing to LDAP over STARTTLS (Which i think tends to be more common nowadays).
  • Do your ldapsearch tests use specifically also use ldaps (not LDAP over STARTTLS) with the exact same port and host as configured in BookStack?
  • Are in proxies in use on this system?
@ssddanbrown commented on GitHub (Aug 28, 2025): Looking at your config, I see `LDAP_SERVER=ldaps://domain.name:636`. - Are you 100% sure you're using LDAPS? That's a different thing to LDAP over STARTTLS (Which i think tends to be more common nowadays). - Do your `ldapsearch` tests use specifically also use `ldaps` (not LDAP over STARTTLS) with the exact same port and host as configured in BookStack? - Are in proxies in use on this system?
Author
Owner

@Utility9298 commented on GitHub (Aug 28, 2025):

Hi @ssddanbrown,
yes LDAPS is working on 636:

 sudo -u www-data ldapsearch -H ldaps://domain.local:636 -D "CN=ldapsync,OU=BEN_MICdiv,OU=BENUTZERsec,OU=domain,DC=domain,DC=local" -w 'supersecurepassword' -b "OU=BENUTZER,OU=domain,DC=company,DC=local" '(sAMAccountName=yourtestuser)'

I never was able to get it running with LDAP over STARTTLS, that's why I am using LDAPS.
When I change my .env to:

#LDAP
AUTH_METHOD=ldap
LDAP_SERVER=ldap://domain.local:389
LDAP_BASE_DN=OU=BENUTZER,OU=domain,DC=domain,DC=local
LDAP_DN="CN=ldapsync,OU=BEN_MICdiv,OU=BENUTZERsec,OU=domain,DC=domain,DC=local"
LDAP_PASS="supersecurepassword"
LDAP_USER_FILTER=(&(sAMAccountName=%s))
LDAP_VERSION=3
LDAP_ID_ATTRIBUTE=BIN;objectGUID
LDAP_EMAIL_ATTRIBUTE=mail
LDAP_DISPLAY_NAME_ATTRIBUTE=sAMAccountName
LDAP_START_TLS=true
LDAP_TLS_INSECURE=true
LDAP_THUMBNAIL_ATTRIBUTE=thumbnailPhoto

I do receive following error in storage/logs/laravel.log:

[2025-08-28 16:20:25] production.INFO: LDAP STARTTLS failure: ldap_start_tls(): Unable to start TLS: Connect error :: Connect error (unknown error code)
[2025-08-28 16:20:25] production.ERROR: Could not start TLS connection. Further details in the application log. {"exception":"[object] (BookStack\\Exceptions\\LdapException(code: 0): Could not start TLS connection. Further details in the application log. at /var/www/bookstack/app/Access/LdapService.php:262)
[stacktrace]
#0 /var/www/bookstack/app/Access/LdapService.php(50): BookStack\\Access\\LdapService->getConnection()
#1 /var/www/bookstack/app/Access/LdapService.php(107): BookStack\\Access\\LdapService->getUserWithAttributes()
#2 /var/www/bookstack/app/Access/Guards/LdapSessionGuard.php(72): BookStack\\Access\\LdapService->getUserDetails()
#3 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(340): BookStack\\Access\\Guards\\LdapSessionGuard->attempt()
#4 /var/www/bookstack/app/Access/LoginService.php(164): Illuminate\\Auth\\AuthManager->__call()
#5 /var/www/bookstack/app/Access/Controllers/LoginController.php(134): BookStack\\Access\\LoginService->attempt()
#6 /var/www/bookstack/app/Access/Controllers/LoginController.php(74): BookStack\\Access\\Controllers\\LoginController->attemptLogin()
#7 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): BookStack\\Access\\Controllers\\LoginController->login()
#8 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\\Routing\\Controller->callAction()
#9 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#10 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController()
#11 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run()
#12 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#13 /var/www/bookstack/app/Http/Middleware/CheckGuard.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#14 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\CheckGuard->handle()
#15 /var/www/bookstack/app/Http/Middleware/RedirectIfAuthenticated.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#16 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\RedirectIfAuthenticated->handle()
#17 /var/www/bookstack/app/Http/Middleware/Localization.php(32): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#18 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\Localization->handle()
#19 /var/www/bookstack/app/Http/Middleware/RunThemeActions.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#20 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\RunThemeActions->handle()
#21 /var/www/bookstack/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#22 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\CheckEmailConfirmed->handle()
#23 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#24 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle()
#25 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#26 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle()
#27 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#28 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest()
#29 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Session\\Middleware\\StartSession->handle()
#30 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#31 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle()
#32 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle()
#34 /var/www/bookstack/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\ApplyCspRules->handle()
#36 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#37 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then()
#38 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack()
#39 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute()
#40 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute()
#41 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch()
#42 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#43 /var/www/bookstack/app/Http/Middleware/PreventResponseCaching.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#44 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\PreventResponseCaching->handle()
#45 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#46 /var/www/bookstack/app/Http/Middleware/TrustProxies.php(41): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#47 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\TrustProxies->handle()
#48 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#49 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#50 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#51 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#52 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\ValidatePostSize->handle()
#53 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#54 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#55 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#56 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then()
#57 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#58 /var/www/bookstack/public/index.php(23): Illuminate\\Foundation\\Http\\Kernel->handle()
#59 {main}
"}

Where can I find the application log according to the error message? Was not able to find it in the documentation...

@Utility9298 commented on GitHub (Aug 28, 2025): Hi @ssddanbrown, yes LDAPS is working on 636: ``` sudo -u www-data ldapsearch -H ldaps://domain.local:636 -D "CN=ldapsync,OU=BEN_MICdiv,OU=BENUTZERsec,OU=domain,DC=domain,DC=local" -w 'supersecurepassword' -b "OU=BENUTZER,OU=domain,DC=company,DC=local" '(sAMAccountName=yourtestuser)' ``` I never was able to get it running with LDAP over STARTTLS, that's why I am using LDAPS. When I change my .env to: ``` #LDAP AUTH_METHOD=ldap LDAP_SERVER=ldap://domain.local:389 LDAP_BASE_DN=OU=BENUTZER,OU=domain,DC=domain,DC=local LDAP_DN="CN=ldapsync,OU=BEN_MICdiv,OU=BENUTZERsec,OU=domain,DC=domain,DC=local" LDAP_PASS="supersecurepassword" LDAP_USER_FILTER=(&(sAMAccountName=%s)) LDAP_VERSION=3 LDAP_ID_ATTRIBUTE=BIN;objectGUID LDAP_EMAIL_ATTRIBUTE=mail LDAP_DISPLAY_NAME_ATTRIBUTE=sAMAccountName LDAP_START_TLS=true LDAP_TLS_INSECURE=true LDAP_THUMBNAIL_ATTRIBUTE=thumbnailPhoto ``` I do receive following error in `storage/logs/laravel.log`: ``` [2025-08-28 16:20:25] production.INFO: LDAP STARTTLS failure: ldap_start_tls(): Unable to start TLS: Connect error :: Connect error (unknown error code) [2025-08-28 16:20:25] production.ERROR: Could not start TLS connection. Further details in the application log. {"exception":"[object] (BookStack\\Exceptions\\LdapException(code: 0): Could not start TLS connection. Further details in the application log. at /var/www/bookstack/app/Access/LdapService.php:262) [stacktrace] #0 /var/www/bookstack/app/Access/LdapService.php(50): BookStack\\Access\\LdapService->getConnection() #1 /var/www/bookstack/app/Access/LdapService.php(107): BookStack\\Access\\LdapService->getUserWithAttributes() #2 /var/www/bookstack/app/Access/Guards/LdapSessionGuard.php(72): BookStack\\Access\\LdapService->getUserDetails() #3 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(340): BookStack\\Access\\Guards\\LdapSessionGuard->attempt() #4 /var/www/bookstack/app/Access/LoginService.php(164): Illuminate\\Auth\\AuthManager->__call() #5 /var/www/bookstack/app/Access/Controllers/LoginController.php(134): BookStack\\Access\\LoginService->attempt() #6 /var/www/bookstack/app/Access/Controllers/LoginController.php(74): BookStack\\Access\\Controllers\\LoginController->attemptLogin() #7 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): BookStack\\Access\\Controllers\\LoginController->login() #8 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\\Routing\\Controller->callAction() #9 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\\Routing\\ControllerDispatcher->dispatch() #10 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController() #11 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run() #12 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}() #13 /var/www/bookstack/app/Http/Middleware/CheckGuard.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #14 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\CheckGuard->handle() #15 /var/www/bookstack/app/Http/Middleware/RedirectIfAuthenticated.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #16 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\RedirectIfAuthenticated->handle() #17 /var/www/bookstack/app/Http/Middleware/Localization.php(32): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #18 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\Localization->handle() #19 /var/www/bookstack/app/Http/Middleware/RunThemeActions.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #20 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\RunThemeActions->handle() #21 /var/www/bookstack/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #22 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\CheckEmailConfirmed->handle() #23 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #24 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle() #25 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #26 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle() #27 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #28 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest() #29 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Session\\Middleware\\StartSession->handle() #30 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #31 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle() #32 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #33 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle() #34 /var/www/bookstack/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #35 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\ApplyCspRules->handle() #36 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #37 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then() #38 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack() #39 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute() #40 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute() #41 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch() #42 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}() #43 /var/www/bookstack/app/Http/Middleware/PreventResponseCaching.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #44 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\PreventResponseCaching->handle() #45 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #46 /var/www/bookstack/app/Http/Middleware/TrustProxies.php(41): Illuminate\\Http\\Middleware\\TrustProxies->handle() #47 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\TrustProxies->handle() #48 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #49 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() #50 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle() #51 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #52 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\ValidatePostSize->handle() #53 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #54 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() #55 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #56 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then() #57 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() #58 /var/www/bookstack/public/index.php(23): Illuminate\\Foundation\\Http\\Kernel->handle() #59 {main} "} ``` Where can I find the application log according to the error message? Was not able to find it in the documentation...
Author
Owner

@bpelaia commented on GitHub (Aug 28, 2025):

Hi Utility9298,
in env you have set:

LDAP_START_TLS=true

in log it reports:

Unable to start TLS

Please try setting LDAP_START_TLS to false.

Best regards,
B.

@bpelaia commented on GitHub (Aug 28, 2025): Hi [Utility9298](https://github.com/Utility9298), in env you have set: > LDAP_START_TLS=true in log it reports: > Unable to start TLS Please try setting LDAP_START_TLS to false. Best regards, B.
Author
Owner

@ssddanbrown commented on GitHub (Aug 28, 2025):

Where can I find the application log according to the error message? Was not able to find it in the documentation...

It's that log, with the referenced message being the line above that message in the log.
That text is primarily for display in the UI.

The original error shared represents a more fundamental connection error.
Are you actually using a .local address, or was that just for the example? Just considering since .local could throw some extra considerations into the mix (eg. reliance on mdns or .local local DNS handling).

As an extra test, you could try running something like this (changing the host name) from the BookStack host system to check if a more basic tcp connection can be made via the LDAPS port to that host:

php -r "echo (fsockopen('ldap.jumpcloud.com', 636, \$a, \$b, 3) ? 'Connected' : 'Failed');"
@ssddanbrown commented on GitHub (Aug 28, 2025): > Where can I find the application log according to the error message? Was not able to find it in the documentation... It's that log, with the referenced message being the line above that message in the log. That text is primarily for display in the UI. The original error shared represents a more fundamental connection error. Are you actually using a `.local` address, or was that just for the example? Just considering since `.local` could throw some extra considerations into the mix (eg. reliance on mdns or `.local` local DNS handling). As an extra test, you could try running something like this (changing the host name) from the BookStack host system to check if a more basic tcp connection can be made via the LDAPS port to that host: ```shell php -r "echo (fsockopen('ldap.jumpcloud.com', 636, \$a, \$b, 3) ? 'Connected' : 'Failed');" ```
Author
Owner

@Utility9298 commented on GitHub (Aug 29, 2025):

@bpelaia setting LDAP_START_TLS to false does work. I can login via LDAP...

@ssddanbrown sadly the domain name really ends on .local ... I know this is not recommended, it's an older environment and it already was like this when I started working here.
I will talk to my boss, we will most likely change domain name soon...

I wil do some further testing, if I find something interesting I will tell you!

@Utility9298 commented on GitHub (Aug 29, 2025): @bpelaia setting LDAP_START_TLS to false does work. I can login via LDAP... @ssddanbrown sadly the domain name really ends on .local ... I know this is not recommended, it's an older environment and it already was like this when I started working here. I will talk to my boss, we will most likely change domain name soon... I wil do some further testing, if I find something interesting I will tell you!
Author
Owner

@Utility9298 commented on GitHub (Aug 29, 2025):

When I run openssl s_client -debug -connect company.local:389 -starttls ldap -showcerts everything seems fine. The connection seems trusted on the bookstack server, so it should even work with LDAP_START_TLS=true

Server certificate
subject=
issuer=DC = local, DC = domain, CN = domain-ca
---
No client certificate CA names sent
Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms: RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1:RSA+SHA512:ECDSA+SHA512
Shared Requested Signature Algorithms: RSA+SHA256:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA384:RSA+SHA512:ECDSA+SHA512
Peer signing digest: SHA256
Peer signature type: RSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 2039 bytes and written 450 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: B20D0000D2F192F8AC7C1FC2851141C59D22B13DD3A2AB11AB570438A457405D
    Session-ID-ctx:
    Master-Key: 616A1D4DCEAE8969EE5E30F68DB9322832A5A8D96AFEF5FF22DD341D4BD3B51BC2C852397597F24A625D9F1003AC7CF8
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1756452474
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: yes
---
@Utility9298 commented on GitHub (Aug 29, 2025): When I run `openssl s_client -debug -connect company.local:389 -starttls ldap -showcerts` everything seems fine. The connection seems trusted on the bookstack server, so it should even work with `LDAP_START_TLS=true` ``` Server certificate subject= issuer=DC = local, DC = domain, CN = domain-ca --- No client certificate CA names sent Client Certificate Types: RSA sign, DSA sign, ECDSA sign Requested Signature Algorithms: RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1:RSA+SHA512:ECDSA+SHA512 Shared Requested Signature Algorithms: RSA+SHA256:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA384:RSA+SHA512:ECDSA+SHA512 Peer signing digest: SHA256 Peer signature type: RSA Server Temp Key: X25519, 253 bits --- SSL handshake has read 2039 bytes and written 450 bytes Verification: OK --- New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: B20D0000D2F192F8AC7C1FC2851141C59D22B13DD3A2AB11AB570438A457405D Session-ID-ctx: Master-Key: 616A1D4DCEAE8969EE5E30F68DB9322832A5A8D96AFEF5FF22DD341D4BD3B51BC2C852397597F24A625D9F1003AC7CF8 PSK identity: None PSK identity hint: None SRP username: None Start Time: 1756452474 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: yes --- ```
Author
Owner

@ssddanbrown commented on GitHub (Aug 29, 2025):

@Utility9298 What about the php command in my last message?
Often requests via PHP may not use system-level configuration (like certs, proxy env options, etc...) like command line tooling, so I'm interested to see if there's a difference in that respect here.

Also, just to help understand the environment, I'm assuming you're using a custom cert?
Is there a custom CA cert in use added to the BookStack host machine for that then?

@ssddanbrown commented on GitHub (Aug 29, 2025): @Utility9298 What about the php command in my last message? Often requests via PHP may not use system-level configuration (like certs, proxy env options, etc...) like command line tooling, so I'm interested to see if there's a difference in that respect here. Also, just to help understand the environment, I'm assuming you're using a custom cert? Is there a custom CA cert in use added to the BookStack host machine for that then?
Author
Owner

@Utility9298 commented on GitHub (Sep 1, 2025):

@ssddanbrown
I see, when i run php -r "echo (fsockopen('domain.local', 636, \$a, \$b, 3) ? 'Connected' : 'Failed');"
the command line changes to Connecteduser@bookstackv1:/var/www/bookstack$ ...

Is this behaviour expected? I do not receive any error messages

I am using a custom cert yes, the certificate authority is installed as trusted CA on the ubuntu host.

@Utility9298 commented on GitHub (Sep 1, 2025): @ssddanbrown I see, when i run `php -r "echo (fsockopen('domain.local', 636, \$a, \$b, 3) ? 'Connected' : 'Failed');"` the command line changes to `Connecteduser@bookstackv1:/var/www/bookstack$` ... Is this behaviour expected? I do not receive any error messages I am using a custom cert yes, the certificate authority is installed as trusted CA on the ubuntu host.
Author
Owner

@ssddanbrown commented on GitHub (Sep 1, 2025):

@Utility9298 Okay, so that indicates a working route to port 636 of your LDAP domain.

For LDAP, PHP uses openldap configuration.
I would have thought that the ldapsearch cli uses the same config and libraries, but maybe that's an incorrect assumption.

On the system, you should find a /etc/ldap/ldap.conf file.
Edit that. By default I think you'd see a TLS_CACERT /etc/ssl/certs/ca-certificates.crt line.
Try specifically updating that line to be your custom CA cert.

Restart any running php services afterwards to ensure changes may be picked up:

systemctl restart php8.3-fpm.service

For reference, documentation for the ldap.conf file can be seen here:
https://www.openldap.org/software//man.cgi?query=ldap.conf&sektion=5&apropos=0&manpath=OpenLDAP+2.4-Release

@ssddanbrown commented on GitHub (Sep 1, 2025): @Utility9298 Okay, so that indicates a working route to port 636 of your LDAP domain. For LDAP, PHP uses openldap configuration. I would have thought that the ldapsearch cli uses the same config and libraries, but maybe that's an incorrect assumption. On the system, you should find a `/etc/ldap/ldap.conf` file. Edit that. By default I think you'd see a `TLS_CACERT /etc/ssl/certs/ca-certificates.crt` line. Try specifically updating that line to be your custom CA cert. Restart any running php services afterwards to ensure changes may be picked up: ```bash systemctl restart php8.3-fpm.service ``` For reference, documentation for the `ldap.conf` file can be seen here: https://www.openldap.org/software//man.cgi?query=ldap.conf&sektion=5&apropos=0&manpath=OpenLDAP+2.4-Release
Author
Owner

@Utility9298 commented on GitHub (Sep 1, 2025):

@ssddanbrown
I did change /etc/ldap/ldap.conf/ to my custom ca cert.
LDAPS does not work as before.

But LDAP with StartTLS does work now :)
So i guess I will stay with LDAP with StartTLS now. Thank you very much for your help!

LDAP_START_TLS=true
LDAP_TLS_INSECURE=false
@Utility9298 commented on GitHub (Sep 1, 2025): @ssddanbrown I did change `/etc/ldap/ldap.conf/` to my custom ca cert. LDAPS does **not** work as before. But LDAP with StartTLS does work now :) So i guess I will stay with LDAP with StartTLS now. Thank you very much for your help! ``` LDAP_START_TLS=true LDAP_TLS_INSECURE=false ```
Author
Owner

@ssddanbrown commented on GitHub (Sep 2, 2025):

Awesome, glad to hear that things are now working!

@ssddanbrown commented on GitHub (Sep 2, 2025): Awesome, glad to hear that things are now working!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/BookStack#5413