web-dev-qa-db-fra.com

Drush ne détecte pas drupal dans le sous-répertoire sites

J'utilise Drush 4 et 5 sans problème. Maintenant que j'ai téléchargé et installé une nouvelle Drush 7.0-dev en utilisant Composer, j'ai un problème c'est-à-dire qu'il ne détecte pas par défaut drupal quand je suis sur sous-dossier sites,

Drush fonctionnant sur le répertoire sites-root,

drupal7/sites/example.com/modules/views$ drush status

 Drupal version                  :  7.30                               
 Site URI                        :  http://example.com              
 Database driver                 :  mysql                              
 Database hostname               :  localhost                          
 Database port                   :                                     
 Database username               :  example_user                    
 Database name                   :  example_db                     
 Database                        :  Connected                          
 Drupal bootstrap                :  Successful                         
 Drupal user                     :                                     
 Default theme                   :  bartik                             
 Administration theme            :  seven                              
 PHP executable                  :  /usr/bin/php                       
 PHP configuration               :  /etc/php5/cli/php.ini              
 PHP OS                          :  Linux                              
 Drush version                   :  7.0-dev                            
 Drush temp directory            :  /tmp                               
 Drush configuration             :                                     
 Drush alias files               :                                     
 Drupal root                     :  drupal7
 Site path                       :  sites/example.com               
 File directory path             :  sites/example.com/files         
 Temporary file directory path   :  /tmp                            

Drush fonctionnant sous sites-sous-répertoire,

drupal7/sites/example.com/modules/views$ drush status

 Drupal version         :  7.30                               
 PHP executable         :  /usr/bin/php                       
 PHP configuration      :  /etc/php5/cli/php.ini              
 PHP OS                 :  Linux                              
 Drush version          :  7.0-dev                            
 Drush temp directory   :  /tmp                               
 Drush configuration    :                                     
 Drush alias files      :                                     
 Drupal root            :  drupal7 

Alors, comment puis-je configurer Drush, puis-je faire quelque chose pour le faire fonctionner, je ne veux pas utiliser --uri ou -l flag ou toute autre option à chaque fois.

Mise à jour

De plus, lorsque je télécharge des modules, il est téléchargé sur sites/all/modules répertoire

drupal7/sites/example.com/modules$ drush dl webform
Project webform (7.x-3.20) downloaded to drupal7/sites/all/modules/webform.                                     [success]

Mais si je suis sur le répertoire sites-root, cela fonctionne bien,

drupal7/sites/example.com$ drush dl webform
Project webform (7.x-3.20) downloaded to /home/sysop/project/drupal7/htdocs/sites/heisenberg.com/modules/webform.                          [success]
4
shrish

Vous devez ajouter un fichier de conf d'alias nommé YOUR_SITE_NAME.aliases.drushrc.php dans le dossier sites\all avec ce code.

// The site in sites/YOUR_SITE_NAME/ 
$aliases['YOUR_SITE_NAME.local'] = array(
  'uri' => 'YOUR_SITE_NAME_URI',
  'root' => '/path/to/drupal_root_folder',
  'path-aliases' => array(
    '%dump-dir' => '/tmp'
  ),
);

Vider ensuite le cache: drush cache-clear drush.

Testez votre alias: @YOUR_SITE_NAME.local status.

Pour exécuter une commande, par exemple: @YOUR_SITE_NAME.local mb MODULE_NAME hook1 hook2 --write


MISE À JOUR: afin de créer automatiquement des alias de site Drush pour de nombreux sites, placez ce code dans votre aliases.drushrc.php fichier. Drush recherchera aliases.drushrc.php dans le dossier ".drush" de votre répertoire personnel (voir cet article pour savoir où placer ce fichier).

$aliases = array();
$drupal = '/var/www/drupal';

// Automatic alias for each Drupal site
$site = new DirectoryIterator($drupal . '/sites');
while ($site->valid()) {
  // Look for directories containing a 'settings.php' file
  if ($site->isDir() && !$site->isDot() && !$site->isLink()) {
    if (file_exists($site->getPathname() . '/settings.php')) {
      // Add site alias
      $basename = $site->getBasename();
      $aliases[$basename] = array(
        'uri' => $basename,
        'root' => $drupal,
      );
    }
  }
  $site->next();
}

// Get all site aliases
$all = array();
foreach ($aliases as $name => $definition) {
  $all[] = '@' . $name;
}

// 'All' alias group
$aliases['all'] = array(
  'site-list' => $all,
);

Vous pouvez également lire ceci: créez vos propres alias drush . Vous pourriez même penser à gérer la synchronisation entre les systèmes distants et locaux ( source ).

EDIT: selon le commentaire ericx, pensez à ajouter bash-completion. Drush est fourni avec un fichier d'achèvement bash, drush.completion.sh, qui propose des complétions d'alias.

4
Kojo

Je suggérerais d'obtenir la version 6.x qui est la version stable pour D7 (oui, le versioning est légèrement déroutant :). Vous devriez pouvoir l'installer avec

composer global require drush/drush:6.*
2
mojzis

Cela peut sembler idiot, mais assurez-vous qu'il existe un fichier settings.php dans drupal7/sites/example.com/et que drush/drupal a accès pour modifier ce fichier

--ou--

essayez d'utiliser le paramètre --uri:

drush dl --uri = http://example.com formulaire Web

0
HumanSky

Je n'ai pas pu exécuter drush depuis l'intérieur du répertoire drupal après la réinstallation de drush. Il s'avère qu'il y avait un lien symbolique pour drush dans ce répertoire qui provoquait la récursivité et donc drush échouait. Suppression du lien symbolique. et a pu réexécuter drush à partir du répertoire.

0
dresh

Jetez un oeil à Drush Aliases .

Ils vous permettent essentiellement de cibler vos installations Drupal sur lesquelles exécuter vos commandes drush).

0
sshrestha

Dans mon cas, il s'est avéré que j'avais besoin d'installer mysql-client:

apt-get install mysql-client

J'ai eu la situation suivante: les drush 4, 5 et 6 ont très bien fonctionné pour moi. drush 7, 8 ne fonctionnent pas (différentes erreurs, y compris celles que vous décrivez). Et ma base de données MySQL était située sur un serveur séparé.

HTH, Alexander

0