2014-10-13 1 views
2

я написал скрипт, который должен самонастройки ex1.mydrupalsite.plBootstrap друпал мульти-сайт в AEGIR архитектуры

Сайты размещаются с использованием платформы AEGIR.

структура выглядит следующим образом:

/var/aegir/platforms/drupal-7.31/sites/ex1.mydrupalsite.pl 
/var/aegir/platforms/drupal-7.31/sites/ex2.mydrupalsite.pl 
# etc... 

Я пытался:

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); 

Но не повезло.

+0

Попробуйте это: http://drupal.stackexchange.com/questions/84517/multisite -drupal-bootstrap – Clive

+0

Я пробовал это раньше, не повезло – szikael

ответ

-1

Проблема заключается в том, что при установке Aegir информация о доступе к базе данных не сохраняется в settings.php, но в /var/aegir/config/server_master/apache/vhost.d/[sitename] в качестве $ _SERVER переменные среды. Вам нужно специально объявить их в своем скрипте.

Или еще лучше, используйте «Drush scr» для запуска скрипта. Это сделает работу по загрузке! См. http://www.oliverdavies.uk/blog/dont-bootstrap-drupal-use-drush/ для более подробного объяснения.

+0

Это не сработало для меня, я получил ошибку: «Не удалось найти Drupal settings.php на ./sites/default/settings.php» – user1015214

2

Я не нашел ответ на это в любом месте, поэтому после некоторых усилий, вот как это сделать:

<?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:[email protected]: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); 
+0

Отлично, мне очень помогли! – user1015214