J'ai essayé d'autres solutions, mais aucune n'est spécifique à ma configuration. Je viens de commencer à utiliser le nouveau sous-système Linux présenté dans la récente mise à jour de Windows 10. J'utilise WAMP x64 v3.0.6, et j'ai réussi à cloner mon site Web et à le faire fonctionner. A la racine du sous-système Linux, j'ai installé Drush globalement avec Composer, en utilisant les instructions données sur Drupal webapage .
Taper drush status
renvoie ce qui suit lorsque je l'exécute dans mon répertoire par défaut:
Drupal version : 7.50
Site URI : http://default
Database driver : mysql
Database hostname : localhost
Database port :
Database username : root
Database name : aerosphere
PHP executable : /usr/bin/php
PHP configuration : /etc/php5/cli/php.ini
PHP OS : Linux
Drush script : /home/bob/.composer/vendor/drush/drush/drush.php
Drush version : 7.1.0
Drush temp directory : /tmp
Drush configuration :
Drush alias files :
Drupal root : /mnt/c/wamp64/www/drupal-7.50
Site path : sites/default
Mais, comme mentionné dans le titre, drush cc all
Retour No Drupal site found, only 'drush' cache was cleared.[warning]
Je suppose que cela a quelque chose à voir avec l'ajout d'un chemin d'accès au .bashrc, mais je ne sais pas quoi ajouter. Tous les conseils seraient grandement appréciés!
Ma question est différente de " Drush - No Drupal Site trouvé lors de l'effacement du cache ", ils sont sur un Mac et utilisent MAMP, et j'utilise WAMP sur Windows. J'ai essayé les solutions proposées sur ce post, mais le problème n'a pas été résolu.
J'ai évidemment des problèmes de connexion à MySQL car j'obtiens ceci lorsque j'exécute la commande mysql
:
Le programme 'mysql' peut être trouvé dans les paquets suivants: * mysql-client-core-5.5 * mariadb-client-core-5.5 * mysql-client-core-5.6 * percona-xtradb-cluster-client-5.5
Essayez: Sudo apt-get install.
J'ai donc ajouté ces lignes à mon .bashrc
fichier:
PATH="$HOME/.composer/vendor/bin:$PATH"
export PATH="/mnt/c/wamp64/mysql/mysql5.7.14/bin:$PATH"
La ligne supérieure a été ajoutée pour que le drush fonctionne. J'ai vérifié plusieurs fois et j'ai le chemin correctement défini, mais cela ne fonctionne toujours pas.
Il y a quelques choses que vous pouvez faire pour aider à déboguer votre drush. Voici ce que vous pouvez essayer:
sortie de débogage
Utilisation drush cc all -vvv
Cela vous fournira des informations précieuses sur ce que fait Drush en arrière-plan et vous montrera peut-être le message d'erreur réel.
Vérifiez votre settings.php
Selon votre configuration, vous pouvez transmettre des variables d'environnement à votre fichier settings.php pour une configuration de base de données par exemple. Ou peut-être pour fournir un memcache. Drush ne les regrette malheureusement pas car il contourne Apache. Par conséquent, je voudrais lui donner un test sans variables d'environnement pour voir si cela élimine le problème ou aider à le réduire. À des fins de débogage, il peut être utile d'utiliser simplement une copie propre de example.settings.php et de simplement modifier le tableau de base de données pour le tester.
Vérifiez que le client mysql est disponible
C'est celui qui m'a fait trébucher il y a quelque temps et le drush -vvv vous indiquera la bonne direction. S'il peut lire le fichier settings.php, ce qui semble être le cas car il obtient les paramètres db, alors peut-être qu'il ne peut pas se connecter à votre base de données mysql. L'un des problèmes que j'ai rencontrés était que la commande client mysql n'était pas disponible. Par exemple. essayez d'appeler 'mysql' et voyez si cela fonctionne. Après avoir corrigé cela, cela a fonctionné. Dans ma configuration Mamp, il s'agissait simplement de s'assurer que le chemin correct vers l'exécutable se trouvait dans mon Shell $ PATH.
J'espère que ça aide.
Notant que votre sortie drush status
ne donne un root
, site path
, database user
et database name
, cela signifie que drush recherche un fichier settings.php
valide avec des informations d'identification et peut le lire.
Cependant, drush status
n'a pas la ligne
Drupal bootstrap : Successful
ce qui indiquerait qu'il peut réellement se charger.
Si vous courez
drush sql-cli
Il tentera de générer une connexion client mysql à la base de données et cela générera probablement une erreur plus lisible sur ce qui se passe.
De plus, drush sql-connect
affichera les informations de connexion (y compris les mots de passe, alors faites attention à les coller).
Cela se produit généralement lorsque le répertoire dans lequel vous appelez drush
n'est pas un site Drupal ou non un sous-répertoire d'un site Drupal ou peut-être que drush ne peut pas reconnaître votre site. Voici quelques conseils qui pourraient vous aider:
sites/default/settings.php
existe.sites/example.com/settings.php
, où example.com
serait généralement le domaine de votre site.drush use example.com
pour passer au site avec lequel vous souhaitez actuellement travailler.J'espère que cela aide. Bon codage!
Une erreur de site Drupal introuvable apparaît lorsque Drush ne trouve pas votre installation Drupal. Vous pouvez spécifier le chemin d'accès à l'installation Drupal comme indiqué ci-dessous):
drush -r path/to/docroot cc all
Un cas spécifique où cela pourrait se produire, avec exactement le même rapport d'état de base, est lorsque ~/.my.cnf
est configuré avec uniquement une entrée password
, sans user
correspondant, et la connexion à la base de données dans settings.php
est configuré avec un autre utilisateur (et mot de passe). Le journal des erreurs mysql dira probablement quelque chose comme ceci pour chaque exécution de drush:
2018-06-29T08:49:30.926226Z 1046 [Note] Access denied for user 'user'@'localhost' (using password: YES)
C'est à dire. la connexion à la base de données échoue pendant l'amorçage drush/drupal. Dans mon cas, cela se produit dans Drush 8.x. Je n'ai pas enquêté sur d'autres versions. Il semble que drush utilise votre ~/.my.cnf
au lieu des valeurs fournies par settings.php
Ajoutez une entrée user
supplémentaire dans ~/.my.cnf
ou supprimez l'entrée password
:
[client]
user = your_mysql_username
password = your_mysql_pass
J'ai eu le même problème lors de l'exécution de drupal sur Windows et de l'utilisation de drush sur le sous-système Windows pour Linux. réponse de jnpWebDeveloper m'a aidé à le corriger. Ce sont les étapes dont j'avais besoin pour faire:
Impossible d'exécuter la commande mysql
(ou une autre commande équivalente selon votre pilote db) à partir du shell est le principal problème de Drush ne pouvant pas se connecter à Drupal. Exécuter drush -d sql-connect
pour découvrir que c'est le cas.
Les lignes suivantes ajoutées à ~/.bashrc
devrait être bien:
export PATH="$HOME/.composer/vendor/bin:$PATH"
export PATH="/mnt/c/wamp64/mysql/mysql5.7.14/bin:$PATH"
où /mnt/c/wamp64/mysql/mysql5.7.14/bin
est votre chemin vers votre commande mysql
.
Pour recharger le script de démarrage Shell, exécutez:
~/.bashrc
ou reconnectez-vous. Cela peut également être vérifié en faisant écho à votre CHEMIN par: echo $PATH
dans Bash Shell.
Pour tout autre problème similaire, vérifiez: Drush installé et en cours d'exécution; Non Drupal trouvé même avec l'URI spécifié .
Dans Mon cas, la réplique de lecture de la base de données a été pointée vers un autre point de terminaison à l'origine du même problème. Commenter ou changer pour en corriger un a résolu le problème.
Il s'agit très probablement d'un cas Edge, mais je le partagerai au cas où cela aiderait quelqu'un.
Dans mon cas, ce problème a été déclenché en changeant le mot de passe de root dans MySQL (le serveur est Linux).
J'ai un fichier, ~/.my.cnf
, qui contient ces lignes:
[client]
user=root
password=mypassword
Cela me permet d'exécuter des commandes mysql dans des scripts bash sans nécessiter d'interaction avec l'utilisateur. Il semble que cela affecte également le fonctionnement de Drush. J'ai changé le mot de passe root sans mettre à jour ce fichier et le problème de drush a commencé. La mise à jour du mot de passe a résolu le problème, tout comme la suppression de ce fichier.
Hou la la! Pour moi, c'était l'inclusion du settings.local.php
fichier qui ne fonctionnait plus localement.
Auparavant, je le faisais comme ça, et je le fais toujours sur le serveur en direct où il fonctionne toujours. Mais localement sur mon macOS avec MAMP, cela a renvoyé un mauvais chemin et donc le settings.local.php
le fichier n'était plus inclus et Drush ne trouvait plus le site par défaut.
// OLD WAY.
if (file_exists(DRUPAL_ROOT . '/' . conf_path() . '/settings.local.php')) {
include DRUPAL_ROOT . '/' . conf_path() . '/settings.local.php';
}
Je l'ai corrigé en remplaçant le code par celui qui est utilisé dans Drupal 8 et 9 et est maintenant ouvert pour le rétroportage, voir https://www.drupal.org/project/ drupal/issues/111852 .
// NEW WAY.
$local_settings = dirname(__FILE__) . '/settings.local.php';
if (file_exists($local_settings)) {
include $local_settings;
}