从PHP脚本运行Drush命令

从PHP脚本运行Drush命令,php,installation,drush,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`; ?> 一切都很

我正在尝试建立一个网站,您可以通过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`;

?>
一切都很好! 我在终端上得到了Drush的输出

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


我会感谢你在这方面的任何帮助!谢谢。

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');
?>

我似乎已经通过从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中。

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

  • 重新阅读本文后,我看到您将其作为www数据从命令行运行,但您的环境可能与Web服务器不同。通过运行su-www数据作为www数据运行是比su-www数据更好的测试
我发现(在OSX上运行Acquia Dev Desktop)几乎所有我们认为在shell中理所当然的东西都是不可用的。下面是我在rules.module php eval()上下文中运行时获得结果的方式

显然,根据需要调整路径。完整命令的结尾是:

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

不幸的是,它没有改变任何事情。如果我把它放在我的脚本中,然后从浏览器中运行它,我不会得到任何结果。如果我使用php install_script.php将其作为www-data运行,它会工作得很好。使用完整的drush路径(/usr/local/bin/drush…)进行尝试。这是一个很好的猜测,但它仍然给出了相同的结果。
# 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