wykonaj polecenie drush z devel / php drupal

9

Czy ktoś może mi powiedzieć, jak mogę wykonać polecenie drush z devel / php?

Mogę wykonywać kody PHP z devel / php. Ale nie wiem, jak mogę wykonać komendę drush z devel / php. (Jak wiemy adres URL „devel / php” pochodzący z modułu devel).

Napisałem jakieś niestandardowe polecenie drush dla celów crona. Mogę uruchomić te polecenia z wiersza poleceń.

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

Oczekiwanie, że jakaś funkcja, jak wspomniano poniżej, będzie działać z devel / php

some_function("drush cc all");
kalidasan
źródło

Odpowiedzi:

11

Ktoś próbował utworzyć moduł zapewniający dostęp do powłoki z poziomu witryny Drupal, ale nigdy nie był w pełni debugowany. Zobacz projekt Drupal Terminal . Być może w terminalu jQuery poczyniono postępy, które mogą ułatwić uruchomienie go, jeśli ktoś go odwiedzi.

Jeśli chcesz exec Drush od wewnątrz php, to na ogół lepiej używać drush_invoke_process()zamiast exec("drush ...").

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

Jeśli jednak uruchamiasz jednorazowe polecenie i nie zależy ci na wynikach polecenia, to exec("drush ...")jest w porządku.

greg_1_anderson
źródło
6

Jak sugeruje kalidasan, możesz użyć funkcji exec (), aby zrobić coś takiego:

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

Zwykle program devel uruchomi to polecenie w miejscu, w którym znajduje się plik settings.php. W przypadku niestandardowej architektury obejmującej wiele witryn i konieczności uruchomienia polecenia drush z innej ścieżki, można połączyć polecenia (używając „;” średnika) do dostęp do właściwej ścieżki i uruchom komendę drush:

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

Czasami uruchamianie komend drush z devel / php jest przydatne, gdy potrzebujesz wykonać funkcje z drush, ale nie masz dostępu do powłoki wiersza poleceń ani pozwolenia na jej uruchomienie.

Uwaga: Użyłem „drush fra” tylko jako przykład, można go użyć z dowolnym innym poleceniem drush.

gerzenstl
źródło
5

Wreszcie znalazłem rozwiązanie. shell_exec („status drush”) działa dobrze.

wprowadź opis zdjęcia tutaj

kalidasan
źródło
2

Drush to powłoka wiersza poleceń i interfejs skryptów uniksowych dla Drupala.

Państwo musi mieć powłoki dostęp do wykonywania tych drush poleceń.

krzyczeć
źródło
Jest na to sposób z devel / php. Mam nadzieję, że znasz użycie exec (). W podobny sposób możemy wykonać polecenie drush poprzez devel / php. Nie mogę zaakceptować twojej odpowiedzi.
kalidasan
..I odpowiedź brzmi ......shell_exec()
sobi3ch 18.04.16
@ sobi3ch Czy możliwe jest wykonanie kopii zapasowej strony i bazy danych przy użyciu kodu php w fazie projektowania? Udostępnij skrypt. Biorąc pod uwagę, że jest to jedyna dostępna opcja. Nie mogę zainstalować modułu backup_migrate.
Umair,