首页 > 解决方案 > Dropal 8:RouteSubscriber 类在 RegisterEventSubscribersPass 中不存在

问题描述

Drupal 8.2.3 站点出现严重问题,直到我的托管公司通知我“重复攻击”并通过编辑 .htaccess 暂时关闭该站点之前,一切都很好。

我试图恢复网站并更新它,但我得到的只是以下内容

本站暂时停机维护,近期将恢复上线。对于任何不便,请接受我们的歉意。

我制作了一个本地副本并尝试更新核心但没有运气,我什至创建了一个带有新数据库的新站点,但是一旦我尝试导入数据库,错误就会回来。

检查 php 错误日志后,我发现了这一点,但不幸的是,我是 Drupal 的新手,不知道如何修复它。

[22-May-2018 17:35:48 UTC] ReflectionException: Class Drupal\token\Routing\RouteSubscriber does not exist in f:\example\core\lib\Drupal\Core\DependencyInjection\Compiler\RegisterEventSubscribersPass.php on line 30 #0 f:\example\core\lib\Drupal\Core\DependencyInjection\Compiler\RegisterEventSubscribersPass.php(30): ReflectionClass->__construct('Drupal\\token\\Ro...')
#1 f:\example\vendor\symfony\dependency-injection\Compiler\Compiler.php(107): Drupal\Core\DependencyInjection\Compiler\RegisterEventSubscribersPass->process(Object(Drupal\Core\DependencyInjection\ContainerBuilder))
#2 f:\example\vendor\symfony\dependency-injection\ContainerBuilder.php(593): Symfony\Component\DependencyInjection\Compiler\Compiler->compile(Object(Drupal\Core\DependencyInjection\ContainerBuilder))
#3 f:\example\core\lib\Drupal\Core\DrupalKernel.php(1254): Symfony\Component\DependencyInjection\ContainerBuilder->compile()
#4 f:\example\core\lib\Drupal\Core\DrupalKernel.php(866): Drupal\Core\DrupalKernel->compileContainer()
#5 f:\example\core\lib\Drupal\Core\DrupalKernel.php(461): Drupal\Core\DrupalKernel->initializeContainer()
#6 f:\example\core\lib\Drupal\Core\DrupalKernel.php(651): Drupal\Core\DrupalKernel->boot()
#7 f:\example\index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#8 {main}

任何帮助表示赞赏并提前感谢

标签: drupaldrupal-8

解决方案


首先,您正在运行一个不安全的 Drupal 核心版本。您应该在您的站点已包含的假设下进行操作,请参考Drupal 安全团队的本指南

您的第一要务应该是在您的站点上获得至少版本 8.4.8 的核心。自 8.2.3 以来,核心有多个高度关键的安全更新。最重要的是:SA-CORE-2018-002SA-CORE-2018-004。可以在这些链接中找到信息和补丁(如果需要)。

维护消息可能是您的云主机配置的内容。联系他们并询问您需要采取哪些步骤来更新您的 .htaccess 规则等。如果是 Drupal 核心维护消息,请参考用户指南中的此文档

希望错误消息与您的网站已过时有关。如果核心更新后仍然存在,请检查您的PHP 版本兼容性


推荐阅读