Tôi đang gặp sự cố kể từ khi cập nhật lên Drupal 9, liên quan đến tích hợp LDAP. Trước đây, khi sử dụng Drupal 8, tôi đã tích hợp thành công LDAP trường học của mình để xác thực người dùng, bằng cách sử dụng mô-đun đóng góp thích hợp. Tuy nhiên, sau khi cập nhật lên Drupal 9, tích hợp LDAP đã ngừng hoạt động và bất cứ khi nào người dùng cố gắng đăng nhập, họ sẽ gặp lỗi màn hình trắng "Trang web gặp lỗi không mong muốn. Vui lòng thử lại sau."
Bây giờ, kiểm tra nhật ký, tôi luôn thấy lỗi này:
Lỗi: Không tìm thấy lớp 'Symfony\Component\OptionsResolver\OptionsResolver' trong Symfony\Component\Ldap\Adapter\AbstractConnection->__construct() (dòng 26 của /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 [chức năng nội bộ]: 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->wrapControllerExecutionInRenderContext()
#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 {chính}
Bây giờ, điều quan trọng cần lưu ý là Tôi không duy trì trang web thông qua Composer - nó đã được cài đặt trước khi trình soạn nhạc là giải pháp mặc định để cài đặt/cập nhật. Do đó, tôi cập nhật lõi và mô-đun theo cách thủ công.
Tôi đã sử dụng thành công một mô-đun rất hữu ích - Ludwig - mà là một Trình soạn thảo thay thế cho các mô-đun đóng góp yêu cầu các thư viện PHP bên ngoài.
Thật vậy, ludwig dường như tìm thấy các thư viện bên ngoài cần thiết cho LDAP, xem ảnh chụp màn hình (và đó là nơi xảy ra lỗi, grahl/ldap lib).
Bây giờ, tôi đã tìm kiếm gói và tài liệu grahl/ldap và nó liệt kê một thư viện có tên tùy chọn-trình giải quyết như một yêu cầu.
Tôi đã tìm kiếm danh sách nhà cung cấp/symfony trên máy chủ web của mình và mặc dù tôi thấy một số thư viện (chẳng hạn như polyfill-php80, một yêu cầu khác của grahl/ldap), tôi không thấy lib trình giải quyết tùy chọn đó.
Tôi đã thử tải xuống các tệp theo cách thủ công (đã chạy nhà soạn nhạc yêu cầu symfony/options-resolver
trong một thư mục tùy ý mới, xem những gì nó tìm nạp và sao chép nội dung của thư mục trình giải quyết tùy chọn vào nhà cung cấp/symfony). Tuy nhiên, tôi không ngạc nhiên khi lỗi vẫn tiếp tục, nó không thể tìm thấy lớp OptionsResolver.php, mặc dù nó "tồn tại" ở nơi lẽ ra phải có (?). Tôi nghi ngờ nó giữ một sổ đăng ký về những gì tồn tại - nó không chỉ đơn giản là kiểm tra đường dẫn và tìm kiếm một tệp ....
Nghe có vẻ ngu ngốc, nhưng tôi hoàn toàn mù mờ ở đây - rõ ràng là tôi không có nhiều kinh nghiệm trong tất cả những điều này ..
Tôi thực sự sẽ biết ơn nếu ai đó có thể cung cấp gợi ý .. Xin lỗi vì đã viết một câu hỏi quá chi tiết, tôi chỉ muốn cung cấp càng nhiều thông tin càng tốt ..
Tôi có nên cài đặt trình giải quyết tùy chọn thông qua Trình soạn thảo mặc dù cho đến nay tôi chưa sử dụng nó để cài đặt/cập nhật?
Mọi sự trợ giúp sẽ rất được trân trọng ..