web-dev-qa-db-ja.com

devel / phpからdrushコマンドを実行するdrupal

どなたか、dvel/phpからdrushコマンドを実行する方法を教えていただけますか?

PHPコードをdevel/phpから実行できます。しかし、dvel/phpからdrushコマンドを実行する方法がわかりません。 )。

私は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");
9
kalidasan

誰かがDrupalサイト内からシェルアクセスを提供するためのモジュールを作成しようとしましたが、完全にはデバッグされませんでした。 Drupalターミナル プロジェクトを参照してください。おそらく進歩があったjQueryターミナルでは、誰かが再訪したときにこれを簡単に機能させることができます。

Drushをphp内から実行する場合は、通常、drush_invoke_process()よりもexec("drush ...")を使用する方が適切です。

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

ただし、1回限りのコマンドを実行していて、コマンドの結果を気にしない場合は、exec("drush ...")で問題ありません。

11
greg_1_anderson

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/phpからdrushコマンドを実行すると、drushから機能を実行する必要があるが、コマンドラインシェルへのアクセス権や実行権限がない場合に便利です。

注:「drush fra」は例としてのみ使用しました。他のどのdrushコマンドでも使用できます。

6
gerzenstl

最終的に解決策が見つかりました。 Shell_exec( "drush status")は正常に動作しています。

enter image description here

5
kalidasan

Drushは、Drupalのコマンドラインシェルおよびnixスクリプトインターフェースです。

必須シェルへのアクセスdrushコマンドを実行します。

2
shrish