выполнить команду drush из devel / php drupal

9

Может ли кто-нибудь сказать мне, как я могу выполнить команду drush из devel / php?

Я могу выполнять PHP-коды из devel / php. Но я не знаю, как я могу выполнить команду drush из devel / php. (Как мы знаем, URL "devel / php" поступает из модуля devel).

Я написал несколько пользовательских команд drush для cron. Я могу запустить эти команды из командной строки.

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

Ожидается, что какая-то функция, как указано ниже, будет запущена из devel / php

some_function("drush cc all");
kalidasan
источник

Ответы:

11

Кто-то пытался создать модуль для обеспечения доступа к оболочке с сайта Drupal, но он никогда не был полностью отлажен. Смотрите проект Drupal Terminal . Возможно, в терминале jQuery были улучшения, которые могли бы упростить эту работу, если бы кто-то снова ее посетил.

Если вы хотите запустить Drush из php, лучше использовать drush_invoke_process(), чем exec("drush ...").

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

Если вы просто запускаете однократную команду и вам не нужны результаты команды, тогда exec("drush ...")все в порядке.

greg_1_anderson
источник
6

Как предполагает Калидасан, вы можете использовать функцию exec (), чтобы сделать что-то вроде:

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

Обычно devel запускает эту команду там, где расположен файл settings.php, если у вас есть настраиваемая многосайтовая архитектура и вам нужно запустить команду drush с другого пути, вы можете объединить команды (используя ";" точка с запятой) для получить доступ к правильному пути и запустить команду drush:

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

Иногда запуск команд drush из devel / php полезен, когда вам нужно выполнить функции из drush, но у вас нет доступа к командной строке или разрешения на ее запуск.

Примечание: я использовал «drush fra» только в качестве примера, его можно использовать с любой другой командой drush.

gerzenstl
источник
5

Наконец-то нашел решение. shell_exec («статус drush») работает нормально.

введите описание изображения здесь

kalidasan
источник
2

Drush - это оболочка командной строки и интерфейс сценариев Unix для Drupal.

У вас должен быть доступ к оболочке для выполнения команд drush .

shrish
источник
Есть способ сделать это из devel / php. Я надеюсь, что вы знаете, использование exec (). Аналогичным образом мы можем выполнить команду drush через devel / php. Я не могу принять ваш ответ.
Калидасан
..И ответ ......shell_exec()
sobi3ch
@ sobi3ch Можно ли сделать резервную копию сайта и базы данных с помощью php-кода в devel? Пожалуйста, поделитесь сценарием. Учитывая, что это единственный вариант, доступный для меня. Я не могу установить модуль backup_migrate.
Umair