我希望在外部php文件中运行Drupal 8的代码。请指导我实现这一目标。
$user = \Drupal::currentUser();
\Drupal::service('session_manager')->destroy();
$user->setAccount(new AnonymousUserSession());
答案 0 :(得分:1)
当您直接访问此页面时,它会注销活动用户。如果没有活动会话,它将不执行任何操作,只显示空白页。
坦率地说,除非你必须使用这种方法,否则如果你能详细解释你的目标,可能会有更好的“Drupal way”解决方案。
否则此脚本有效:
<?php
use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;
// Change the directory to the Drupal root.
chdir('..');
$autoloader = require_once 'autoload.php';
$request = Request::createFromGlobals();
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod');
$kernel->prepareLegacyRequest($request);
\Drupal::moduleHandler()->addModule('user', 'core/modules/user');
\Drupal::moduleHandler()->load('user');
$account = \Drupal::service('authentication')->authenticate($request);
if ($account) {
\Drupal::currentUser()->setAccount($account);
user_logout();
}