从PHP脚本运行Drush命令

时间:2012-02-27 11:49:20

标签: php installation drush

我正在尝试构建一个可以通过web gui安装Drupal的站点。

<?php

`drush site-install --yes --db-url=mysql://USER:PASSWORD@localhost:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD --account-mail=contact@email.com --site-name=SiteName`;

?>

以上是脚本的片段。 如果我从浏览器运行脚本它没有做任何事情,但如果我尝试将其作为www-data运行:

php install_script.php

一切都很完美! 我在终端上得到Drush的输出就好了。

有谁能告诉我如何触发Drush从PHP脚本进行Drupal安装/设置? 我完全失去了,我看不出我做错了什么。

我将非常感谢您的帮助!感谢。

4 个答案:

答案 0 :(得分:3)

我似乎已经通过php执行此操作来修复它:

<?php
exec('/usr/bin/php /var/www/drush/drush.php site-install --yes --db-url=mysql://USER:PASSWORD@localhost:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD --account-mail=contact@email.com --site-name=SiteName');
?>

我基本上删除了Drush pear包并手动将Drush 5.0安装到/ var / www / drush中。

答案 1 :(得分:2)

php exec函数怎么样?即:

<?php
  exec('drush site-install --yes --db-url=mysql://USER:PASSWORD@localhost:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD --account-mail=contact@email.com --site-name=SiteName');
?>

答案 2 :(得分:2)

这很容易成为权限问题。当您从浏览器调用页面时,它将由Web服务器用户(例如apache或www)运行,但是当您从命令行运行时,您将自己运行它。

  • 重读这个我看到你从命令行运行它作为www-data,但你的环境可能与web服务器不同。通过运行su-www-data作为www-data运行是比su www-data更好的测试。

答案 3 :(得分:1)

我发现(在OSX上运行Acquia Dev Desktop)我们在shell中认为理所当然的一切都是不可用的。这是我得到结果的方式 - 在rules.module php eval()上下文中运行。

# When running from web, drush doesn't have any environment set up,
# has no search paths for site-aliases, and maybe can't even find PHP.
$php = "/Applications/acquia-drupal/php5_4/bin/php";
$drush_php = "/Users/dan/.composer/vendor/bin/drush.php";
$drush_options = " --config=/Users/dan/.drushrc.php ";
$command = "$php $drush_php $drush_options $site_alias status";
$result = exec($command, $output, $return);
drupal_set_message(print_r(array($command, $result, $output, $return), 1));

显然,请根据需要调整路径。完整的命令最终为:

/Applications/acquia-drupal/php5_4/bin/php /Users/dan/.composer/vendor/bin/drush.php --config=/Users/dan/.drushrc.php @example.org.nz status