5

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

4 回答 4

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 中。

于 2012-02-27T22:51:43.270 回答
2

phpexec函数呢?IE:

<?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');
?>
于 2012-02-27T11:54:01.413 回答
2

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

  • 重读这篇文章,我看到您从命令行将其作为 www-data 运行,但您的环境可能与网络服务器不同。通过运行 su - www-data 作为 www-data 运行是比 su www-data 更好的测试。
于 2013-08-17T16:25:58.143 回答
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
于 2015-03-18T12:36:56.113 回答