来自PHP文件的Drupal 8服务调用

来自PHP文件的Drupal 8服务调用,drupal,drupal-8,Drupal,Drupal 8,我想在外部php文件中运行Drupal8下面的代码。请指导我实现这一目标 $user = \Drupal::currentUser(); \Drupal::service('session_manager')->destroy(); $user->setAccount(new AnonymousUserSession()); 当您直接访问此页面时,它将注销活动用户。如果没有活动会话,它将什么也不做,只显示一个空白页 坦白地说,除非您必须使用这种方法,否则如果您详细解释您的目标,可能

我想在外部php文件中运行Drupal8下面的代码。请指导我实现这一目标

$user = \Drupal::currentUser();
\Drupal::service('session_manager')->destroy();
$user->setAccount(new AnonymousUserSession());

当您直接访问此页面时,它将注销活动用户。如果没有活动会话,它将什么也不做,只显示一个空白页

坦白地说,除非您必须使用这种方法,否则如果您详细解释您的目标,可能会有更好的“Drupal方式”解决方案

否则,此脚本将工作:

<?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();
}

你能详细说明一下吗?似乎您想成为活动用户。是的,我想注销,但从驻留在核心目录中的php文件中说logout.php