从devel / php drupal执行drush命令


9

谁能告诉我如何从devel / php执行drush命令?

我可以从devel / php执行PHP代码。但是我不知道如何从devel / php执行drush命令。(我们知道“ devel / php” URL来自devel模块)。

我已经为cron编写了一些自定义drush命令。我可以从命令行运行那些命令。

> 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");

Answers:


11

有人试图创建一个模块来提供来自Drupal站点内的shell访问,但是从未对其进行完全调试。参见Drupal Terminal项目。也许jQuery终端有了一些进步,如果有人重新访问它的话,可能会更容易使它起作用。

如果您想从php中执行Drush,通常最好使用drush_invoke_process()而不是exec("drush ...")

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

如果您只是运行一次命令,而又不关心命令结果,那exec("drush ...")很好。


6

正如kalidasan建议的那样,您可以使用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执行功能但无权访问命令行shell或运行它的权限时,从devel / php运行drush命令很有用。

注意:我仅以“ drush fra”为例,它可以与任何其他drush命令一起使用。


5

终于找到了解决方案。shell_exec(“ drush status”)运行正常。

在此处输入图片说明


2

Drush是Drupal的命令行shellUnix脚本接口。

必须具有外壳程序访问权限才能执行drush命令。


有一种方法可以从devel / php中实现。我希望您知道使用exec()。我们可以通过devel / php执行drush命令的类似方法。我不能接受你的回答。
kalidasan

..而答案是……shell_exec()
sobi3ch 2016年

@ sobi3ch是否可以使用devel中的php代码备份站点和数据库?请分享脚本。考虑到这是我唯一可用的选择。我无法安装backup_migrate模块。
Umair
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.