exécuter la commande drush depuis devel / php drupal

9

Quelqu'un peut-il me dire comment exécuter la commande drush depuis devel / php?

Je peux exécuter des codes PHP depuis devel / php. Mais je ne sais pas comment exécuter la commande drush depuis devel / php. (Comme nous le savons, l'URL "devel / php" provient du module devel).

J'ai écrit une commande drush personnalisée à des fins cron. Je peux en mesure d'exécuter ces commandes à partir de la ligne de commande.

> drush my-cmd or drush cc all or drush status , etc ... I can run it through command line.

Attendre que certaines fonctions comme mentionné ci-dessous s'exécutent à partir de devel / php

some_function("drush cc all");
kalidasan
la source

Réponses:

11

Quelqu'un a essayé de créer un module pour fournir un accès shell à partir d'un site Drupal, mais il n'a jamais été entièrement débogué. Voir le projet Drupal Terminal . Il y a peut-être eu des avancées dans le terminal jQuery qui pourraient rendre plus facile le fonctionnement si quelqu'un le revisitait.

Si vous souhaitez exécuter Drush depuis php, il est généralement préférable d'utiliser drush_invoke_process()plutôt que exec("drush ...").

$values = drush_invoke_process("@site", "cc", array("all"), array("verbose"));

Si vous exécutez simplement une commande unique et que vous ne vous souciez pas des résultats de la commande, alors tout exec("drush ...")va bien.

greg_1_anderson
la source
6

Comme le suggère kalidasan, vous pouvez utiliser la fonction exec () pour faire quelque chose comme:

exec("drush fra -y", $output); var_dump($output);

Normalement, devel exécutera cette commande où se trouve le fichier settings.php, au cas où vous auriez une architecture multisite personnalisée et que vous auriez besoin d'exécuter la commande drush à partir d'un autre chemin, vous pourriez enchaîner les commandes (en utilisant ";" point-virgule) pour accéder au bon chemin et exécuter la commande drush:

exec("cd {absolute or relative path to your settings.php site}; drush fra -y;", $output); var_dump($output);

Parfois, l'exécution de commandes drush à partir de devel / php est utile lorsque vous devez exécuter des fonctionnalités à partir de drush mais que vous n'avez pas accès au shell de ligne de commande ni la permission de l'exécuter.

Remarque: J'ai utilisé "drush fra" uniquement à titre d'exemple, il pourrait être utilisé avec n'importe quelle autre commande drush.

gerzenstl
la source
5

Solution finalement trouvée. shell_exec ("drush status") fonctionne très bien.

entrez la description de l'image ici

kalidasan
la source
2

Drush est un shell de ligne de commande et une interface de script Unix pour Drupal.

Vous devez avoir un accès shell pour exécuter les commandes drush .

maigre
la source
Il existe un moyen de le faire à partir de devel / php. J'espère que vous connaissez l'utilisation de exec (). De la même manière, nous pouvons exécuter la commande drush via devel / php. Je ne peux accepter ta réponse.
kalidasan
..ET la réponse est ......shell_exec()
sobi3ch
@ sobi3ch Est-il possible de faire une sauvegarde du site et de la base de données en utilisant du code php dans devel? Veuillez partager le script. Considérant que c'est la seule option à ma disposition. Je ne peux pas installer le module backup_migrate.
Umair