Führen Sie den Drush-Befehl von devel / php drupal aus

9

Kann mir bitte jemand sagen, wie ich den Drush-Befehl von devel / php ausführen kann?

Ich kann PHP-Codes von devel / php ausführen. Aber ich weiß nicht, wie ich den Drush-Befehl von devel / php ausführen kann. (Wie wir wissen, kommt die URL "devel / php" vom Entwicklungsmodul).

Ich habe einen benutzerdefinierten Drush-Befehl für Cron-Zwecke geschrieben. Ich kann diese Befehle über die Befehlszeile ausführen.

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

Erwarten Sie, dass einige der unten genannten Funktionen von devel / php ausgeführt werden

some_function("drush cc all");
Kalidasan
quelle

Antworten:

11

Jemand hat versucht, ein Modul zu erstellen, um Shell-Zugriff von einer Drupal-Site aus zu ermöglichen, aber es wurde nie vollständig getestet. Siehe das Drupal Terminal- Projekt. Möglicherweise gab es Fortschritte im jQuery-Terminal, die es möglicherweise einfacher machen, dies zum Laufen zu bringen, wenn jemand es erneut besucht.

Wenn Sie Drush aus PHP heraus ausführen möchten, ist es im Allgemeinen besser, es zu verwenden drush_invoke_process()als exec("drush ...").

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

Wenn Sie nur einen einmaligen Befehl ausführen und sich nicht um die Befehlsergebnisse kümmern, exec("drush ...")ist dies jedoch in Ordnung.

greg_1_anderson
quelle
6

Wie kalidasan vorschlägt, können Sie die Funktion exec () verwenden, um Folgendes zu tun:

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

Normalerweise führt devel diesen Befehl dort aus, wo sich die settings.php befindet. Wenn Sie eine benutzerdefinierte Architektur mit mehreren Standorten haben und den Drush-Befehl von einem anderen Pfad aus ausführen müssen, können Sie Befehle (mit dem Semikolon ";") verketten Greifen Sie auf den richtigen Pfad zu und führen Sie den Drush-Befehl aus:

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

Manchmal ist das Ausführen von Drush-Befehlen von devel / php hilfreich, wenn Sie Funktionen von drush ausführen müssen, aber keinen Zugriff auf die Befehlszeilen-Shell oder die Berechtigung zum Ausführen haben.

Hinweis: Ich habe "drush fra" nur als Beispiel verwendet, es kann mit jedem anderen drush-Befehl verwendet werden.

gerzenstl
quelle
5

Endlich Lösung gefunden. shell_exec ("drush status") funktioniert einwandfrei .

Geben Sie hier die Bildbeschreibung ein

Kalidasan
quelle
2

Drush ist eine Befehlszeilen-Shell und eine Unix-Skriptschnittstelle für Drupal.

Sie müssen über Shell-Zugriff verfügen , um die Drush- Befehle ausführen zu können.

schrumpfen
quelle
Es gibt eine Möglichkeit, dies von devel / php aus zu tun. Ich hoffe, Sie kennen die Verwendung von exec (). Auf ähnliche Weise können wir den Drush-Befehl über devel / php ausführen. Ich kann deine Antwort nicht akzeptieren.
Kalidasan
..Und die Antwort ist ......shell_exec()
sobi3ch
@ sobi3ch Ist es möglich, eine Sicherungskopie der Site und der Datenbank mit PHP-Code in der Entwicklung zu erstellen? Bitte teilen Sie das Skript. In Anbetracht dessen ist dies die einzige Option, die mir zur Verfügung steht. Ich kann das Modul backup_migrate nicht installieren.
Umair