首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aegir架构中的Bootstrap drupal多站点

Aegir架构中的Bootstrap drupal多站点
EN

Stack Overflow用户
提问于 2014-10-13 19:45:33
回答 2查看 164关注 0票数 2

我写了PHP脚本,它必须引导ex1.mydrupalsite.pl

这些站点使用Aegir平台托管。

结构看起来像这样:

代码语言:javascript
复制
/var/aegir/platforms/drupal-7.31/sites/ex1.mydrupalsite.pl
/var/aegir/platforms/drupal-7.31/sites/ex2.mydrupalsite.pl
# etc...

我一直在尝试:

代码语言:javascript
复制
define('DRUPAL_ROOT', '/var/aegir/platforms/drupal-7.31');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
$_SERVER['HTTP_HOST'] = 'ex1.mydrupalsite.pl';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['SCRIPT_NAME'] = '/' . basename(__FILE__);
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

但没那么走运。

EN

回答 2

Stack Overflow用户

发布于 2016-05-13 00:33:57

我在任何地方都没有找到这个问题的答案,所以经过一些努力,下面是如何做到这一点的:

代码语言:javascript
复制
<?php
  # Set username and password
  $username = 'NAME';
  $password = 'PASSWORD';

  # Drupal Bootstrap code
  define('DRUPAL_ROOT', '/var/aegir/platforms/drupal_7');
  require_once DRUPAL_ROOT . '/includes/bootstrap.inc';

  # My attempt at injecting variables for multisite stuff to fit aegir
  $variables['url'] = 'http://example.com/';

  $databases['default']['default'] = array(
    'driver' => 'mysql',
    'database' => 'mydb',
    'username' => 'myuser',
    'password' => 'mypass',
    'host' => 'localhost',
    'port' => '3306',
  );

  $db_url['default'] = 'mysql://sqluser:sqlpass@localhost:3306/sqldb';

  drupal_override_server_variables($variables);

  # Try to bootstrap
  drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

  # Try to login
  $uid = FALSE;
  $account = user_load_by_name($username);
  if ($account) {
    // Allow alternate password hashing schemes.
    require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
    if (user_check_password($password, $account)) {
      // Successful authentication.
      $uid = $account->uid;

     // Update user to new password scheme if needed.
      if (user_needs_new_hash($account)) {
        user_save($account, array('pass' => $password));
      }
    }
  }
  debug($uid);
票数 2
EN

Stack Overflow用户

发布于 2015-07-31 11:20:05

问题是,在Aegir安装中,数据库访问信息不是存储在settings.php中,而是作为$_SERVER环境变量存储在/var/aegir/config/server_master/apache/vhost.d/sitename中。您需要在脚本中专门声明它们。

或者更好,使用"Drush scr“来运行脚本。它将为您完成引导工作!有关详细说明,请参阅http://www.oliverdavies.uk/blog/dont-bootstrap-drupal-use-drush/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26339233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档