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

时间:2018-05-09 00:04:43

标签: drupal drupal-8

我希望在外部php文件中运行Drupal 8的代码。请指导我实现这一目标。

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

1 个答案:

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