4.3 使用单一 PHP 档案重置 Drupal 8 的管理员密码
1. 把下面的代码, 贴到一个新的档案内, 例如 reset-password.php
<?php
use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;
// Boot Drupal.
$autoloader = require __DIR__ . '/autoload.php';
$request = Request::createFromGlobals();
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod', FALSE);
$kernel->boot();
// Get password hasher service.
$password_hasher = $kernel->getContainer()->get('password');
// Hash password.
if (isset($_GET['pass']) && !empty($_GET['pass'])) {
$newhash = $password_hasher->hash($_GET['pass']);
}
else {
die('请加 "?pass=PASSWORD" 到 URL 的尾部, PASSWORD 是你想写入的密码');
}
// Update user password.
$updatepass = Drupal::database()->update('users_field_data')
->fields(array(
'pass' => $newhash,
// 如果忘记了管理员的用户名, 请更改下2句的设定值
// 'name' => 'admin',
// 'mail' => 'yourmail@example.com'
))
->condition('uid', '1', '=')
->execute();
// Clean user 1 cache.
Drupal::cache('entity')->delete('values:user:1');
print "管理员密码已更新, 请拆除本档案及回到 Drupal 8 后台更换密码.";copy
2. 把档案复制到 Drupal 8 的主目录下
3. 打开浏览器访问你刚才的档案, 例如 : http://你的网址/reset-password.php?pass=你的新密码
4. 用新密码回到 Drupal 8 后台再更换密码及拆除本档案 (重要)
注:本教程由 虎门-华 提供。