jalankan perintah drush dari devel / php drupal

9

Adakah yang bisa memberitahu saya bagaimana saya bisa menjalankan perintah drush dari devel / php?

Saya dapat menjalankan kode PHP dari devel / php. Tapi saya tidak tahu bagaimana saya bisa menjalankan perintah drush dari devel / php. (Seperti yang kita ketahui, URL "devel / php" berasal dari modul devel).

Saya telah menulis beberapa perintah drush khusus untuk tujuan cron. Saya dapat menjalankan perintah-perintah itu dari baris perintah.

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

Mengharapkan beberapa fungsi seperti yang disebutkan di bawah ini untuk dijalankan dari devel / php

some_function("drush cc all");
kalidasan
sumber

Jawaban:

11

Seseorang mencoba membuat modul untuk menyediakan akses shell dari dalam situs Drupal, tetapi itu tidak pernah sepenuhnya ditolak. Lihat proyek Terminal Drupal . Mungkin ada kemajuan di terminal jQuery yang mungkin membuatnya lebih mudah untuk membuatnya berfungsi jika seseorang mengunjungi kembali.

Jika Anda ingin mengeksekusi Drush dari dalam php, umumnya lebih baik menggunakan drush_invoke_process()daripada exec("drush ...").

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

Jika Anda hanya menjalankan perintah satu kali dan Anda tidak peduli dengan hasil perintah, maka exec("drush ...")tidak apa-apa.

greg_1_anderson
sumber
6

Seperti yang disarankan kalidasan, Anda bisa menggunakan fungsi exec (), untuk melakukan sesuatu seperti:

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

Biasanya, devel akan menjalankan perintah ini di mana setting.php berada, jika Anda memiliki arsitektur multi-situs khusus dan Anda perlu menjalankan perintah drush dari jalur lain, Anda bisa mengaitkan perintah (menggunakan ";" semi colon) ke akses ke jalan yang benar dan jalankan perintah drush:

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

Kadang-kadang, menjalankan perintah drush dari devel / php berguna ketika Anda perlu menjalankan fungsionalitas dari drush tetapi Anda tidak memiliki akses ke shell baris perintah atau izin untuk menjalankannya.

Catatan: Saya menggunakan "drush fra" hanya sebagai contoh, itu dapat digunakan dengan perintah drush lainnya.

gerzenstl
sumber
5

Akhirnya ditemukan solusinya. shell_exec ("status drush") berfungsi dengan baik.

masukkan deskripsi gambar di sini

kalidasan
sumber
2

Drush adalah shell baris perintah dan antarmuka skrip Unix untuk Drupal.

Anda harus memiliki akses shell untuk menjalankan perintah drush .

semak
sumber
Ada cara untuk melakukannya dari devel / php. Saya harap Anda tahu penggunaan exec (). Cara serupa kita dapat menjalankan perintah drush melalui devel / php. Saya tidak bisa menerima jawaban Anda.
kalidasan
..Dan jawabannya adalah ......shell_exec()
sobi3ch
@ sobi3ch Apakah mungkin membuat cadangan situs dan basis data menggunakan kode php di devel? Silakan bagikan skripnya. Mengingat ini adalah satu-satunya pilihan yang tersedia untuk saya. Saya tidak dapat menginstal modul backup_migrate.
Umair