Am o problemă de la actualizarea la Drupal 9, în ceea ce privește integrarea LDAP. Anterior, în timp ce aveam Drupal 8, integrasem cu succes LDAP din școlile mele pentru autentificarea utilizatorilor, folosind modulul contributiv corespunzător. Cu toate acestea, după actualizarea la Drupal 9, integrarea LDAP a încetat să funcționeze și ori de câte ori un utilizator încearcă să se autentifice, primește o eroare de ecran alb „Site-ul web a întâmpinat o eroare neașteptată. Vă rugăm să încercați din nou mai târziu”.
Acum, verificând jurnalele, văd întotdeauna această eroare:
Eroare: Clasa „Symfony\Component\OptionsResolver\OptionsResolver” nu a fost găsită în Symfony\Component\Ldap\Adapter\AbstractConnection->__construct() (linia 26 din /var/www/www-dev/modules/ludwig/lib/grahl- ldap/source/Adapter/AbstractConnection.php)
#0 /var/www/www-dev/modules/ludwig/lib/grahl-ldap/source/Adapter/ExtLdap/Adapter.php(41): Symfony\Component\Ldap\Adapter\AbstractConnection->__construct()
#1 /var/www/www-dev/modules/ludwig/lib/grahl-ldap/source/Ldap.php(40): Symfony\Component\Ldap\Adapter\ExtLdap\Adapter->getConnection()
#2 /var/www/www-dev/modules/ldap/ldap_servers/src/LdapBridge.php(143): Symfony\Component\Ldap\Ldap->bind()
#3 /var/www/www-dev/modules/ldap/ldap_servers/src/ServerListBuilder.php(92): Drupal\ldap_servers\LdapBridge->bind()
#4 /var/www/www-dev/modules/ldap/ldap_servers/src/ServerListBuilder.php(58): Drupal\ldap_servers\ServerListBuilder->checkStatus()
#5 /var/www/www-dev/core/lib/Drupal/Core/Entity/EntityListBuilder.php(219): Drupal\ldap_servers\ServerListBuilder->buildRow()
#6 /var/www/www-dev/core/lib/Drupal/Core/Entity/Controller/EntityListController.php(23): Drupal\Core\Entity\EntityListBuilder->render()
#7 [funcție internă]: Drupal\Core\Entity\Controller\EntityListController->listing()
#8 /var/www/www-dev/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array()
#9 /var/www/www-dev/core/lib/Drupal/Core/Render/Renderer.php(578): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#10 /var/www/www-dev/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext()
#11 /var/www/www-dev/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerContext()InderRender
#12 /var/www/www-dev/vendor/symfony/http-kernel/HttpKernel.php(158): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#13 /var/www/www-dev/vendor/symfony/http-kernel/HttpKernel.php(80): Symfony\Component\HttpKernel\HttpKernel->handleRaw()
#14 /var/www/www-dev/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle()
#15 /var/www/www-dev/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle()
#16 /var/www/www-dev/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle()
#17 /var/www/www-dev/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass()
#18 /var/www/www-dev/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle()
#19 /var/www/www-dev/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
#20 /var/www/www-dev/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
#21 /var/www/www-dev/core/lib/Drupal/Core/DrupalKernel.php(717): Stack\StackedHttpKernel->handle()
#22 /var/www/www-dev/index.php(19): Drupal\Core\DrupalKernel->handle()
#23 {principal}
Acum, este important să rețineți că Nu întrețin site-ul prin Composer - a fost instalat înainte ca Composer să fie soluția implicită pentru instalare/actualizare. Prin urmare, actualizez nucleul și modulele manual.
Am folosit cu succes un modul foarte util - Ludwig - care este un Alternativă la Composer pentru modulele contrib care necesită biblioteci PHP externe.
Într-adevăr, Ludwig pare să găsească bibliotecile externe necesare pentru LDAP, vezi captura de ecran (și de aici vine eroarea, lib grahl/ldap).
Acum, am căutat pachetul grahl/ldap și documentația și listează o bibliotecă numită opțiuni-rezolvator ca o cerinţă.
Am căutat în lista furnizorului/symfony pe serverul meu web și, deși văd mai multe biblioteci (cum ar fi polyfill-php80, care este o altă cerință a grahl/ldap), nu văd că opțiuni-resolver lib.
Am încercat să descarc manual fișierele (run compozitorul necesită Symfony/options-resolver
într-un nou director arbitrar, am văzut ce a preluat și am copiat conținutul folderului opțiuni-resolver în vendor/symfony). Totuși, nu sunt surprins că eroarea continuă, nu poate găsi clasa OptionsResolver.php, chiar dacă „există” acolo unde ar trebui să fie (?). Bănuiesc că păstrează un registru cu ceea ce există - nu pur și simplu verifică calea și caută un fișier ....
Ar putea suna stupid, dar sunt complet în întuneric aici - evident că nu sunt foarte experimentat în toate astea..
Aș fi foarte recunoscător dacă cineva ar putea oferi un indiciu .. Scuze că am scris o întrebare prea detaliată, am vrut doar să ofer cât mai multe informații posibil..
Ar trebui să instalez opțiuni-resolver prin Composer, deși nu l-am folosit până acum pentru a instala/actualiza anterior?
Orice ajutor ar fi foarte apreciat..