ejecutar comando drush desde devel / php drupal

9

¿Alguien puede decirme cómo puedo ejecutar el comando drush desde devel / php?

Puedo ejecutar códigos PHP desde devel / php. Pero no sé cómo puedo ejecutar el comando drush desde devel / php. (Como sabemos, la URL "devel / php" proviene del módulo devel).

He escrito un comando drush personalizado para el propósito cron. Puedo ejecutar esos comandos desde la línea de comandos.

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

Esperando que alguna función como se menciona a continuación se ejecute desde devel / php

some_function("drush cc all");
kalidasan
fuente

Respuestas:

11

Alguien intentó crear un módulo para proporcionar acceso de shell desde un sitio de Drupal, pero nunca se depuró por completo. Ver el proyecto Terminal Drupal . Tal vez ha habido avances en el terminal jQuery que podrían facilitar que esto funcione si alguien lo revisó.

Si desea ejecutar Drush desde PHP, generalmente es mejor usarlo drush_invoke_process()que hacerlo exec("drush ...").

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

Si solo está ejecutando un comando único y no le importan los resultados del comando, entonces exec("drush ...")está bien, sin embargo.

greg_1_anderson
fuente
6

Como sugiere kalidasan, puede usar la función exec () para hacer algo como:

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

Normalmente, devel ejecutará este comando donde se encuentra settings.php, en caso de que tenga una arquitectura multisitio personalizada y necesite ejecutar el comando drush desde otra ruta, puede encadenar comandos (usando ";" punto y coma) para acceder al camino correcto y ejecutar el comando drush:

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

A veces, ejecutar comandos drush desde devel / php es útil cuando necesita ejecutar funcionalidades desde drush pero no tiene acceso al shell de la línea de comandos o no tiene permiso para ejecutarlo.

Nota: Utilicé "drush fra" solo como ejemplo, podría usarse con cualquier otro comando drush.

gerzenstl
fuente
5

Finalmente encontré solución. shell_exec ("estado de drush") funciona bien.

ingrese la descripción de la imagen aquí

kalidasan
fuente
2

Drush es un shell de línea de comandos y una interfaz de script Unix para Drupal.

Usted debe tener acceso a una consola para ejecutar las Drush comandos.

encogerse
fuente
Hay una manera de hacerlo desde devel / php. Espero que sepas el uso de exec (). De manera similar, podemos ejecutar el comando drush a través de devel / php. No puedo aceptar tu respuesta.
kalidasan
..Y la respuesta es ......shell_exec()
sobi3ch
@ sobi3ch ¿Es posible hacer una copia de seguridad del sitio y la base de datos utilizando el código php en desarrollo? Por favor comparte el guión. Teniendo en cuenta que esta es la única opción disponible para mí. No puedo instalar el módulo backup_migrate.
Umair