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]
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.
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.*
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
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.
Jetez un oeil à Drush Aliases .
Ils vous permettent essentiellement de cibler vos installations Drupal sur lesquelles exécuter vos commandes drush
).
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